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

# Sending Payments

> Disburse fiat to bank accounts and off-ramp stablecoins to fiat.

## Overview

<Tip>
  This guide walks through disbursing payments using the Payouts endpoint for granular control. For most integrations, the [Transfers API](/api/transfers/create) is the recommended starting point — specify a stablecoin source and fiat destination, and Thiqwave handles the rest.
</Tip>

Thiqwave lets you send value as fiat payouts or convert stablecoins to fiat for bank delivery. Both flows are quote-driven.

## Sending Fiat Payouts

Convert stablecoins to fiat and send directly to recipient bank accounts. The process follows a quote-then-execute pattern.

<Steps>
  <Step title="Get a Quote">
    First, request a payout quote to determine exchange rates and fees.
  </Step>

  <Step title="Create the Payout">
    Execute the payout using the quote ID and recipient details.
  </Step>

  <Step title="Track Status">
    Monitor the payout lifecycle via API or webhooks.
  </Step>
</Steps>

### Quote Request

Request a quote to lock in exchange rates and fees for a stablecoin-to-fiat payout:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.thiqwave.com/v1/quotes \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "source_currency": "USDC",
      "destination_currency": "AED",
      "amount": "500.00",
      "corridor": "uae",
      "recipient_type": "bank_account"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.thiqwave.com/v1/quotes', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      source_currency: 'USDC',
      destination_currency: 'AED',
      amount: '500.00',
      corridor: 'uae',
      recipient_type: 'bank_account'
    })
  });

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

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

  response = requests.post(
    'https://api.thiqwave.com/v1/quotes',
    headers={
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    json={
      'source_currency': 'USDC',
      'destination_currency': 'AED',
      'amount': '500.00',
      'corridor': 'uae',
      'recipient_type': 'bank_account'
    }
  )

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

### Create the Payout

Once you have the quote ID, create the payout with recipient bank details:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.thiqwave.com/v1/payouts \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "quote_id": "quote_1234567890",
      "recipient": {
        "name": "Ahmed Al-Mansouri",
        "account_number": "1234567890",
        "bank_code": "ADCBAEAAXXX",
        "country": "AE"
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.thiqwave.com/v1/payouts', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      quote_id: 'quote_1234567890',
      recipient: {
        name: 'Ahmed Al-Mansouri',
        account_number: '1234567890',
        bank_code: 'ADCBAEAAXXX',
        country: 'AE'
      }
    })
  });

  const payout = await response.json();
  ```

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

  response = requests.post(
    'https://api.thiqwave.com/v1/payouts',
    headers={
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    json={
      'quote_id': 'quote_1234567890',
      'recipient': {
        'name': 'Ahmed Al-Mansouri',
        'account_number': '1234567890',
        'bank_code': 'ADCBAEAAXXX',
        'country': 'AE'
      }
    }
  )

  payout = response.json()
  ```
</CodeGroup>

### Payout Response

The payout creation response includes all transaction details:

```json theme={null}
{
  "id": "payout_1a2b3c4d5e6f",
  "status": "pending",
  "quote_id": "quote_1234567890",
  "source": {
    "amount": "500.00",
    "currency": "USDC"
  },
  "destination": {
    "amount": 183750,
    "currency": "AED"
  },
  "recipient": {
    "name": "Ahmed Al-Mansouri",
    "account_number": "1234567890",
    "bank_code": "ADCBAEAAXXX",
    "country": "AE"
  },
  "created_at": "2026-04-10T14:30:00Z"
}
```

## Off-Ramping: Stablecoin to Fiat

Convert stablecoins on-chain to fiat in the recipient's bank account. This flow handles blockchain settlement and fiat delivery.

<Steps>
  <Step title="Get an Off-Ramp Quote">
    Request a quote for stablecoin-to-fiat conversion and the deposit address where stablecoins will be received.
  </Step>

  <Step title="Send Stablecoins">
    Transfer stablecoins from your wallet to the provided deposit address.
  </Step>

  <Step title="Fiat Settlement">
    Stablecoins are converted and fiat is delivered to the recipient's bank account.
  </Step>
</Steps>

### Quote Request

Request an off-ramp quote to get the deposit address and settlement details:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.thiqwave.com/v1/quotes \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "source_currency": "USDC",
      "destination_currency": "AED",
      "amount": "1000.00",
      "source_network": "polygon",
      "corridor": "uae",
      "recipient_type": "bank_account"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.thiqwave.com/v1/quotes', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      source_currency: 'USDC',
      destination_currency: 'AED',
      amount: '1000.00',
      source_network: 'polygon',
      corridor: 'uae',
      recipient_type: 'bank_account'
    })
  });

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

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

  response = requests.post(
    'https://api.thiqwave.com/v1/quotes',
    headers={
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    json={
      'source_currency': 'USDC',
      'destination_currency': 'AED',
      'amount': '1000.00',
      'source_network': 'polygon',
      'corridor': 'uae',
      'recipient_type': 'bank_account'
    }
  )

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

### Create the Off-Ramp

Create the off-ramp transaction with the quote and recipient details:

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://api.thiqwave.com/v1/bridging/offramp \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{
      "quote_id": "quote_9876543210",
      "recipient": {
        "name": "Layla Hassan",
        "account_number": "0987654321",
        "bank_code": "NBAKAEAD",
        "country": "AE"
      },
      "source_network": "polygon"
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.thiqwave.com/v1/bridging/offramp', {
    method: 'POST',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      quote_id: 'quote_9876543210',
      recipient: {
        name: 'Layla Hassan',
        account_number: '0987654321',
        bank_code: 'NBAKAEAD',
        country: 'AE'
      },
      source_network: 'polygon'
    })
  });

  const offramp = await response.json();
  ```

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

  response = requests.post(
    'https://api.thiqwave.com/v1/bridging/offramp',
    headers={
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    },
    json={
      'quote_id': 'quote_9876543210',
      'recipient': {
        'name': 'Layla Hassan',
        'account_number': '0987654321',
        'bank_code': 'NBAKAEAD',
        'country': 'AE'
      },
      'source_network': 'polygon'
    }
  )

  offramp = response.json()
  ```
</CodeGroup>

### Off-Ramp Response

The off-ramp creation response includes the blockchain deposit address:

```json theme={null}
{
  "id": "bridge_a1b2c3d4e5f6",
  "type": "offramp",
  "status": "pending",
  "source": {
    "amount": "1000.00",
    "currency": "USDC",
    "network": "polygon"
  },
  "destination": {
    "amount": 367500,
    "currency": "AED"
  },
  "deposit_address": "0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb",
  "blockchain": "polygon",
  "recipient": {
    "name": "Layla Hassan",
    "account_number": "0987654321",
    "bank_code": "NBAKAEAD",
    "country": "AE"
  },
  "created_at": "2026-04-10T14:45:00Z"
}
```

<Note>
  Send exactly the stablecoin amount shown in the quote to the `deposit_address`. Any excess or shortfall may delay settlement.
</Note>

## Payout Methods

Thiqwave supports multiple payout channels depending on the corridor and destination bank capabilities. Available methods are determined by your recipient's location and banking infrastructure.

| Corridor           | Primary Methods                                   |
| ------------------ | ------------------------------------------------- |
| UAE                | Same-day bank transfers, instant payment networks |
| Egypt              | Bank transfers, mobile money integration          |
| Kuwait             | Inter-bank transfers, same-day settlement options |
| Other MENA regions | Regional clearing systems, bank-to-bank transfers |

The optimal method is selected automatically based on the destination bank and currency pair.

## Tracking Status

Monitor your payouts and off-ramps through their lifecycle. Each transaction moves through defined states.

### Status Lifecycle

| Status       | Description                                          |
| ------------ | ---------------------------------------------------- |
| `pending`    | Transaction initiated, awaiting processing           |
| `processing` | Actively being processed by the network              |
| `completed`  | Successfully settled to recipient                    |
| `failed`     | Transaction failed; funds returned or require action |

### Webhook Events

Subscribe to events to track transaction progression:

* **`payout.completed`** — Fiat payout successfully delivered to bank account
* **`payout.failed`** — Payout failed; check error details for resolution
* **`bridge.completed`** — Off-ramp completed; fiat delivered after stablecoin receipt
* **`bridge.failed`** — Off-ramp failed; stablecoins returned to deposit address

Webhook payloads include full transaction details and status updates. See [Webhooks](/guides/webhooks) for implementation details.

## Best Practices

Follow these guidelines for reliable payment operations:

<Steps>
  <Step title="Always quote before executing">
    Get a quote to lock in rates and fees before initiating a transaction. Quotes expire after 3 minutes.
  </Step>

  <Step title="Implement idempotency">
    Use idempotency keys to safely retry failed requests without creating duplicate transactions.
  </Step>

  <Step title="Verify recipient details">
    Double-check bank account numbers, SWIFT codes, and account holder names to prevent failed deliveries.
  </Step>

  <Step title="Handle quote expiry">
    Quotations are valid for 3 minutes. Re-request if your payout is delayed beyond this window.
  </Step>

  <Step title="Use webhooks for updates">
    Implement webhook listeners to track transaction status in real-time rather than polling.
  </Step>

  <Step title="Test in staging first">
    Validate your integration in our staging environment before processing live transactions.
  </Step>
</Steps>

## Next Steps

Explore related functionality and deepen your integration:

<CardGroup>
  <Card title="Receiving Payments" href="/guides/receiving-payments" icon="arrow-down-to-line">
    Accept deposits and inbound transfers into your account.
  </Card>

  <Card title="Webhooks" href="/guides/webhooks" icon="webhook">
    Set up real-time notifications for transaction events.
  </Card>

  <Card title="Payouts API" href="/api/payouts/create" icon="code">
    Complete API reference for payout endpoints.
  </Card>

  <Card title="Bridging API" href="/api/bridging/create" icon="code">
    Complete API reference for off-ramp endpoints.
  </Card>
</CardGroup>
