> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thiqwave.com/llms.txt
> Use this file to discover all available pages before exploring further.

# On-chain FX & Cross-chain Transfers

> Convert between stablecoins and move assets across blockchain networks.

import { CardGroup, Steps, CodeGroup, Note, Tip } from 'mintlify/components';

## Overview

Thiqwave enables on-chain FX conversions and cross-chain transfers. Convert USDT to USDC, move assets between Ethereum and Polygon, or do both in a single transaction. Thiqwave routes through optimal liquidity paths with transparent pricing.

## Capabilities

**Cross-stablecoin conversions** — Convert USDT to USDC, USDC to DAI, and other stablecoin pairs on the same blockchain.

**Cross-chain transfers** — Move USDT from Ethereum to Tron, USDC from Polygon to Ethereum, or other supported chains.

**Combined conversions** — Convert stablecoins AND move across chains in a single operation (e.g., USDT Ethereum → USDC Polygon).

## Getting a quote

Request a quote before executing any conversion or transfer. Quotes show exact output amounts and are valid for 3 minutes.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.thiqwave.com/v1/quotes" \
    -H "X-API-Key: your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "type": "swap",
      "source_stablecoin": "USDT",
      "source_blockchain": "ethereum",
      "destination_stablecoin": "USDC",
      "destination_blockchain": "polygon",
      "amount": "1000.00"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.thiqwave.com/v1/quotes', {
    method: 'POST',
    headers: {
      'X-API-Key': 'your-api-key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      type: 'swap',
      source_stablecoin: 'USDT',
      source_blockchain: 'ethereum',
      destination_stablecoin: 'USDC',
      destination_blockchain: 'polygon',
      amount: '1000.00'
    })
  });

  const quote = await response.json();
  console.log(quote);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.thiqwave.com/v1/quotes',
      headers={
          'X-API-Key': 'your-api-key',
          'Content-Type': 'application/json'
      },
      json={
          'type': 'swap',
          'source_stablecoin': 'USDT',
          'source_blockchain': 'ethereum',
          'destination_stablecoin': 'USDC',
          'destination_blockchain': 'polygon',
          'amount': '1000.00'
      }
  )

  quote = response.json()
  print(quote)
  ```
</CodeGroup>

### Response

```json theme={null}
{
  "id": "quote_fx_001",
  "type": "swap",
  "source_stablecoin": "USDT",
  "source_blockchain": "ethereum",
  "source_amount": "1000.00",
  "destination_stablecoin": "USDC",
  "destination_blockchain": "polygon",
  "destination_amount": "999.00",
  "fee": "1.00",
  "expires_at": "2026-04-08T12:03:00Z",
  "created_at": "2026-04-08T12:00:00Z"
}
```

<Note>
  Stablecoin amounts are in human-readable format (e.g., `"1000.00"` = 1,000 USDT). The quote shows the optimal route Thiqwave will use. Routes change based on liquidity.
</Note>

## Cross-stablecoin conversion (same chain)

Convert USDT to USDC on Ethereum without moving to another blockchain.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.thiqwave.com/v1/onchain-fx" \
    -H "X-API-Key: your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "quote_id": "quote_fx_001",
      "source_stablecoin": "USDT",
      "source_blockchain": "ethereum",
      "source_amount": "1000.00",
      "destination_stablecoin": "USDC",
      "destination_blockchain": "ethereum",
      "recipient_address": "0x1234567890123456789012345678901234567890",
      "metadata": {
        "conversion_id": "conv_12345"
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.thiqwave.com/v1/onchain-fx', {
    method: 'POST',
    headers: {
      'X-API-Key': 'your-api-key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      quote_id: 'quote_fx_001',
      source_stablecoin: 'USDT',
      source_blockchain: 'ethereum',
      source_amount: '1000.00',
      destination_stablecoin: 'USDC',
      destination_blockchain: 'ethereum',
      recipient_address: '0x1234567890123456789012345678901234567890',
      metadata: {
        conversion_id: 'conv_12345'
      }
    })
  });

  const conversion = await response.json();
  console.log(conversion);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.thiqwave.com/v1/onchain-fx',
      headers={
          'X-API-Key': 'your-api-key',
          'Content-Type': 'application/json'
      },
      json={
          'quote_id': 'quote_fx_001',
          'source_stablecoin': 'USDT',
          'source_blockchain': 'ethereum',
          'source_amount': '1000.00',
          'destination_stablecoin': 'USDC',
          'destination_blockchain': 'ethereum',
          'recipient_address': '0x1234567890123456789012345678901234567890',
          'metadata': {
              'conversion_id': 'conv_12345'
          }
      }
  )

  conversion = response.json()
  print(conversion)
  ```
</CodeGroup>

## Cross-chain transfer (same stablecoin)

Move USDT from Ethereum to Tron without converting to a different stablecoin.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.thiqwave.com/v1/onchain-fx" \
    -H "X-API-Key: your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "quote_id": "quote_fx_001",
      "source_stablecoin": "USDT",
      "source_blockchain": "ethereum",
      "source_amount": "1000.00",
      "destination_stablecoin": "USDT",
      "destination_blockchain": "tron",
      "recipient_address": "TR1234567890123456789012345678901234567890",
      "metadata": {
        "bridge_id": "bridge_67890"
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.thiqwave.com/v1/onchain-fx', {
    method: 'POST',
    headers: {
      'X-API-Key': 'your-api-key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      quote_id: 'quote_fx_001',
      source_stablecoin: 'USDT',
      source_blockchain: 'ethereum',
      source_amount: '1000.00',
      destination_stablecoin: 'USDT',
      destination_blockchain: 'tron',
      recipient_address: 'TR1234567890123456789012345678901234567890',
      metadata: {
        bridge_id: 'bridge_67890'
      }
    })
  });

  const transfer = await response.json();
  console.log(transfer);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.thiqwave.com/v1/onchain-fx',
      headers={
          'X-API-Key': 'your-api-key',
          'Content-Type': 'application/json'
      },
      json={
          'quote_id': 'quote_fx_001',
          'source_stablecoin': 'USDT',
          'source_blockchain': 'ethereum',
          'source_amount': '1000.00',
          'destination_stablecoin': 'USDT',
          'destination_blockchain': 'tron',
          'recipient_address': 'TR1234567890123456789012345678901234567890',
          'metadata': {
              'bridge_id': 'bridge_67890'
          }
      }
  )

  transfer = response.json()
  print(transfer)
  ```
</CodeGroup>

## Combined conversion + cross-chain

Convert USDT to USDC AND move from Ethereum to Polygon in a single operation.

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST "https://api.thiqwave.com/v1/onchain-fx" \
    -H "X-API-Key: your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "quote_id": "quote_fx_001",
      "source_stablecoin": "USDT",
      "source_blockchain": "ethereum",
      "source_amount": "1000.00",
      "destination_stablecoin": "USDC",
      "destination_blockchain": "polygon",
      "recipient_address": "0x1234567890123456789012345678901234567890",
      "metadata": {
        "operation_id": "op_combined_001"
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.thiqwave.com/v1/onchain-fx', {
    method: 'POST',
    headers: {
      'X-API-Key': 'your-api-key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      quote_id: 'quote_fx_001',
      source_stablecoin: 'USDT',
      source_blockchain: 'ethereum',
      source_amount: '1000.00',
      destination_stablecoin: 'USDC',
      destination_blockchain: 'polygon',
      recipient_address: '0x1234567890123456789012345678901234567890',
      metadata: {
        operation_id: 'op_combined_001'
      }
    })
  });

  const operation = await response.json();
  console.log(operation);
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.thiqwave.com/v1/onchain-fx',
      headers={
          'X-API-Key': 'your-api-key',
          'Content-Type': 'application/json'
      },
      json={
          'quote_id': 'quote_fx_001',
          'source_stablecoin': 'USDT',
          'source_blockchain': 'ethereum',
          'source_amount': '1000.00',
          'destination_stablecoin': 'USDC',
          'destination_blockchain': 'polygon',
          'recipient_address': '0x1234567890123456789012345678901234567890',
          'metadata': {
              'operation_id': 'op_combined_001'
          }
      }
  )

  operation = response.json()
  print(operation)
  ```
</CodeGroup>

### Response

```json theme={null}
{
  "id": "fx_abc789",
  "quote_id": "quote_fx_001",
  "status": "pending",
  "source_stablecoin": "USDT",
  "source_blockchain": "ethereum",
  "source_amount": "1000.00",
  "destination_stablecoin": "USDC",
  "destination_blockchain": "polygon",
  "destination_amount": "999.00",
  "recipient_address": "0x1234567890123456789012345678901234567890",
  "metadata": {
    "operation_id": "op_combined_001"
  },
  "created_at": "2026-04-08T12:00:30Z"
}
```

## Operation statuses

<CardGroup cols={2}>
  <div>
    **pending** — Operation created, waiting to start
  </div>

  <div>
    **swapping** — Converting between stablecoins
  </div>

  <div>
    **bridging** — Moving across blockchains
  </div>

  <div>
    **completing** — Delivering to recipient
  </div>

  <div>
    **completed** — Operation finished
  </div>

  <div>
    **failed** — Operation failed
  </div>
</CardGroup>

## Tracking operations

Monitor operations through webhooks for real-time updates.

```json theme={null}
{
  "type": "swap.completed",
  "data": {
    "id": "fx_abc789",
    "status": "completed",
    "destination_amount": "999.00",
    "transaction_hash": "0x123abc456def",
    "completed_at": "2026-04-08T12:05:00Z"
  }
}
```

## Supported conversions and routes

Thiqwave supports major stablecoin pairs and cross-chain routes:

| Source          | Destination     | Supported |
| --------------- | --------------- | --------- |
| USDT (Ethereum) | USDC (Ethereum) | Yes       |
| USDC (Polygon)  | USDT (Polygon)  | Yes       |
| USDT (Ethereum) | USDT (Polygon)  | Yes       |
| USDT (Ethereum) | USDT (Tron)     | Yes       |
| USDC (Ethereum) | USDC (Polygon)  | Yes       |
| DAI (Ethereum)  | USDC (Ethereum) | Yes       |

Contact support for additional conversion pairs.

## Best practices

* **Always get a quote first** — Understand fees and output before executing
* **Use exact amounts** — Ensure source amount matches the quote
* **Validate recipient addresses** — Double-check wallet addresses before submission
* **Use metadata** — Track operations with transaction or conversion IDs
* **Monitor webhooks** — React when operations complete
* **Handle failures** — Some conversions may fail due to liquidity; have retry logic
* **Consider slippage** — Quotes may differ slightly due on-chain slippage; set tolerance in your system

## Error handling

Common issues and resolutions:

| Error                     | Cause                                  | Resolution                                |
| ------------------------- | -------------------------------------- | ----------------------------------------- |
| Insufficient liquidity    | Route has low liquidity                | Request a new quote or use different pair |
| Quote expired             | More than 3 minutes have passed        | Request a new quote                       |
| Invalid recipient address | Address format incorrect               | Verify and correct the address format     |
| Unsupported pair          | Stablecoin or blockchain not supported | Check supported conversions table         |
| Network congestion        | Blockchain network is congested        | Retry after waiting                       |

## Next steps

* [Sending Payments](/guides/sending-payments) — Disburse fiat and off-ramp stablecoins to fiat
* [Receiving Payments](/guides/receiving-payments) — Accept fiat deposits and on-ramp to stablecoins
* [Webhooks](/guides/webhooks) — Set up real-time notifications
