# Withdrawal initiation with API

Our service supports multiple withdrawal methods tailored to different payment systems. While the API endpoint remains unified, the required fields vary depending on the withdrawal method chosen. Merchants should select the most suitable option for their specific needs, keeping in mind that certain methods come with limitations based currency, provider, or region. If you're unsure which withdrawal type is relevant for your use case, our technical support team is available to assist and guide you to the appropriate option. The sections below outline the necessary parameters for several base types, along with the examples and limitations.

{% hint style="warning" %}
Withdrawals are initiated via an API request to the endpoint. Examples of requests are described below. See the **general endpoint specification** at the bottom of this page.
{% endhint %}

### SEPA Secure Withdrawal

Use the following payload example to initiate a withdrawal.&#x20;

{% hint style="warning" %}
To be able to initiate a SEPA Secure withdrawal please follow this [guide](https://docs.xgateway.tech/integration-guides/sepa-secure-withdrawal-initiation) first to complete all preconditions.
{% endhint %}

<table><thead><tr><th width="233.25">Parameter</th><th width="106.3203125">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>amount</td><td>true</td><td>String representation of requested amount</td></tr><tr><td>applicationId</td><td>false</td><td>Application ID in case the application is used</td></tr><tr><td>customerId</td><td>true</td><td>Customer id in the merchant system</td></tr><tr><td>orderId</td><td>false</td><td>Invoice id in the merchant system. If provided, used as an idempotency key. </td></tr><tr><td>currency</td><td>true</td><td>String representation of the requested currency. GBP in the example below</td></tr></tbody></table>

{% code title="Payoload example" %}

```json
{
  "amount": "1000",
  "currency": "GBP",
  "customerId": "test_customer_id",
  "orderId": "test_order_id"
}
```

{% endcode %}

### INR Peer to Peer Withdrawals

To initiate a withdrawal in INR currency, please provide the following parameters in the withdrawal request:

<table><thead><tr><th width="232.4375">Parameter</th><th width="128.37109375">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>amount</td><td>true</td><td>String representation of requested amount</td></tr><tr><td>applicationId</td><td>false</td><td>Application ID in case the application is used</td></tr><tr><td>customerId</td><td>true</td><td>Customer id in the merchant system</td></tr><tr><td>orderId</td><td>false</td><td>Invoice id in the merchant system. If provided, used as an idempotency key. </td></tr><tr><td>currency</td><td>true</td><td>String representation of the requested currency. Should be INR in this case.</td></tr><tr><td>beneficiaryAccountNumber</td><td>false</td><td>Customer's bank account number.</td></tr><tr><td>beneficiaryIfsc</td><td>false</td><td>String representation of the Indian Financial System Code</td></tr><tr><td>beneficiaryMobileNumber</td><td>true</td><td>Customer’s phone number in string format</td></tr><tr><td>beneficiaryName</td><td>true</td><td>Customer’s first name and last name in string format</td></tr><tr><td>beneficiaryVpa</td><td>false</td><td>String representation of the Virtual Payment Address</td></tr><tr><td>purpose</td><td>true</td><td>One of the following: Cashbacks, LoyaltyPointsRedemption, Refunds, MarketingCampaign, VendorPayouts</td></tr><tr><td>transferMode</td><td>true</td><td><p></p><p>One of the following: IMPS, UPI, RTGS. Please provide "IMPS" at the moment.</p></td></tr></tbody></table>

{% code title="Payoload example" %}

```json
{
  "amount": "1000",
  "currency": "INR",
  "customerId": "test_customer_id",
  "orderId": "test_order_id",
  "beneficiaryMobileNumber": "+11111111111",
  "beneficiaryName": "John Doe",
  "beneficiaryAccountNumber": "123456789",
  "beneficiaryIfsc": "ASDF0000161",
  "purpose": "VendorPayouts",
  "transferMode": "IMPS"
}
```

{% endcode %}

{% hint style="info" %}
Minimum amount for INR deposits and withdrawals is 300 INR
{% endhint %}

### INR Immediate Payment Service Withdrawals

To initiate a withdrawal in INR currency using IMPS, please provide the following parameters in the withdrawal request:

<table><thead><tr><th width="232.4375">Parameter</th><th width="128.37109375">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>amount</td><td>true</td><td>The amount to be withdrawn</td></tr><tr><td>applicationId</td><td>false</td><td>Application ID in case the application is used</td></tr><tr><td>customerId</td><td>true</td><td>Customer id in the merchant system</td></tr><tr><td>orderId</td><td>false</td><td>Invoice id in the merchant system. If provided, used as an idempotency key. </td></tr><tr><td>currency</td><td>true</td><td>String representation of the requested currency. Should be <code>INR</code> in this case.</td></tr><tr><td>bankAccountName</td><td>false</td><td>The bank account name, if the bank account transfer is selected (optional)</td></tr><tr><td>bankAccountNumber</td><td>true</td><td>The bank account number, if the bank account transfer is selected.</td></tr><tr><td>bankName</td><td>false</td><td>The bank name, if the bank account transfer is selected (optional).</td></tr><tr><td>bankIfscCode</td><td>true</td><td>The IFSC code</td></tr><tr><td>paymentSystem</td><td>true</td><td>String representation of the payment system used. Should be <code>IMPS</code> in this case.</td></tr></tbody></table>

{% hint style="info" %}
Fields marked as optional - such as `bankAccountName`, `bankName` - may be omitted. However, providing them can improve success rates and reduce processing time.
{% endhint %}

{% code title="Payoload example" %}

```json
{
  "amount": "5000",
  "customerId": "ceb5a846-0394-4f08-a1de-efa8581ebfc6",
  "orderId": "ceb5a846-1394-4f08-a1de-efa8581xbad9",
  "currency": "INR",
  "bankAccountName": "R V ENTERPRISE",
  "bankAccountNumber": "112233602699",
  "bankName": "STATE BANK OF INDIA",
  "bankIfscCode": "SBIN0001239",
  "paymentSystem": "IMPS"
}
```

{% endcode %}

### TRY Papara withdrawals

To initiate a withdrawal in TRY currency from your Papara account, please provide the following parameters in the withdrawal request

<table><thead><tr><th width="233.25">Parameter</th><th width="106.3203125">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>amount</td><td>true</td><td>String representation of requested amount. Should be multiple of 50.</td></tr><tr><td>applicationId</td><td>false</td><td>Application ID in case the application is used</td></tr><tr><td>customerId</td><td>true</td><td>Customer id in the merchant system</td></tr><tr><td>orderId</td><td>false</td><td>Invoice id in the merchant system. If provided, used as an idempotency key. </td></tr><tr><td>currency</td><td>true</td><td>String representation of the requested currency. Should be TRY in this case.</td></tr><tr><td>beneficiaryAccountNumber</td><td>true</td><td>Customer's Papara account number.</td></tr><tr><td>beneficiaryName</td><td>true</td><td>Customer’s first name and last name in string format</td></tr><tr><td>beneficiaryEmail</td><td>false</td><td>Customer's email address.</td></tr><tr><td>paymentMethod</td><td>true</td><td>Payment method name. Should be "papara" in this case.</td></tr></tbody></table>

{% code title="Payload example" %}

```json
{
    "beneficiaryAccountNumber": "2004169722",
    "beneficiaryEmail": "testemail@gmail.com",
    "beneficiaryName":"John Doe",
    "currency": "TRY",
    "amount": "50",
    "customerId": "test_customer_id",
    "paymentMethod": "papara"
}
```

{% endcode %}

{% hint style="warning" %}
Deposit and withdrawal amounts in TRY must be multiples of 50.
{% endhint %}

### TRY Papel withdrawals

To initiate a withdrawal in TRY currency from your Papel account, please provide the following parameters in the withdrawal request

<table><thead><tr><th width="233.25">Parameter</th><th width="106.3203125">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>amount</td><td>true</td><td>String representation of requested amount. Should be multiple of 50.</td></tr><tr><td>applicationId</td><td>false</td><td>Application ID in case the application is used</td></tr><tr><td>customerId</td><td>true</td><td>Customer id in the merchant system</td></tr><tr><td>orderId</td><td>false</td><td>Invoice id in the merchant system. If provided, used as an idempotency key. </td></tr><tr><td>currency</td><td>true</td><td>String representation of the requested currency. Should be TRY in this case.</td></tr><tr><td>beneficiaryAccountNumber</td><td>true</td><td>Customer's Papel account number. Should be 10 digit string.</td></tr><tr><td>beneficiaryName</td><td>true</td><td>Customer’s first name and last name in string format</td></tr><tr><td>beneficiaryEmail</td><td>false</td><td>Customer's email address.</td></tr><tr><td>paymentMethod</td><td>true</td><td>Payment method name. Should be "papel" in this case.</td></tr></tbody></table>

{% code title="Payload example" %}

```json
{
    "beneficiaryAccountNumber": "2004169722",
    "beneficiaryEmail": "testemail@gmail.com",
    "beneficiaryName":"John Doe",
    "currency": "TRY",
    "amount": "50",
    "customerId": "test_customer_id",
    "paymentMethod": "papel"
}
```

{% endcode %}

{% hint style="warning" %}
Deposit and withdrawal amounts in TRY must be multiples of 50.
{% endhint %}

### TRY Parolapara withdrawals

To initiate a withdrawal in TRY currency from your Parolapara account, please provide the following parameters in the withdrawal request

<table><thead><tr><th width="233.25">Parameter</th><th width="106.3203125">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>amount</td><td>true</td><td>String representation of requested amount. Should be multiple of 50.</td></tr><tr><td>applicationId</td><td>false</td><td>Application ID in case the application is used</td></tr><tr><td>customerId</td><td>true</td><td>Customer id in the merchant system</td></tr><tr><td>orderId</td><td>false</td><td>Invoice id in the merchant system. If provided, used as an idempotency key. </td></tr><tr><td>currency</td><td>true</td><td>String representation of the requested currency. Should be TRY in this case.</td></tr><tr><td>beneficiaryAccountNumber</td><td>true</td><td>Customer's Parolapara account number. Should be 10 digit string.</td></tr><tr><td>beneficiaryName</td><td>true</td><td>Customer’s first name and last name in string format</td></tr><tr><td>beneficiaryEmail</td><td>false</td><td>Customer's email address.</td></tr><tr><td>paymentMethod</td><td>true</td><td>Payment method name. Should be "parolapara" in this case.</td></tr></tbody></table>

{% code title="Payload example" %}

```json
{
    "beneficiaryAccountNumber": "2004169722",
    "beneficiaryEmail": "testemail@gmail.com",
    "beneficiaryName":"John Doe",
    "currency": "TRY",
    "amount": "50",
    "customerId": "test_customer_id",
    "paymentMethod": "parolapara"
}
```

{% endcode %}

{% hint style="warning" %}
Deposit and withdrawal amounts in TRY must be multiples of 50.
{% endhint %}

### TRY Bankpay/Havale withdrawals

To initiate a withdrawal in TRY currency from your Bankpay account, please provide the following parameters in the withdrawal request

<table><thead><tr><th width="233.25">Parameter</th><th width="106.3203125">Mandatory</th><th>Description</th></tr></thead><tbody><tr><td>amount</td><td>true</td><td>String representation of requested amount. Should be multiple of 50.</td></tr><tr><td>applicationId</td><td>false</td><td>Application ID in case the application is used</td></tr><tr><td>customerId</td><td>true</td><td>Customer id in the merchant system</td></tr><tr><td>orderId</td><td>false</td><td>Invoice id in the merchant system. If provided, used as an idempotency key. </td></tr><tr><td>currency</td><td>true</td><td>String representation of the requested currency. Should be TRY in this case.</td></tr><tr><td>beneficiaryAccountNumber</td><td>true</td><td>Customer's IBAN.</td></tr><tr><td>beneficiaryName</td><td>true</td><td>Customer’s first name and last name in string format</td></tr><tr><td>beneficiaryEmail</td><td>false</td><td>Customer's email address.</td></tr><tr><td>paymentMethod</td><td>true</td><td>Payment method name. Should be "bankpay" in this case.</td></tr></tbody></table>

{% code title="Payload example" %}

```json
{
    "beneficiaryAccountNumber": "TR330006100519786457841326",
    "beneficiaryEmail": "testemail@gmail.com",
    "beneficiaryName":"John Doe",
    "currency": "TRY",
    "amount": "50",
    "customerId": "test_customer_id",
    "paymentMethod": "bankpay"
}
```

{% endcode %}

{% hint style="warning" %}
Deposit and withdrawal amounts in TRY must be multiples of 50.
{% endhint %}

### Crypto withdrawals

To initiate a withdrawal in any Crypto currency, please provide the following parameters in the withdrawal request

{% hint style="warning" %}
**Withdrawal currency** must be specified using the unique currency code from the [supported currencies list](https://docs.xgateway.tech/overview/readme/supported-currencies) (see the *Currency* column there). Cryptocurrencies with the same currency symbol can be deployed on different networks and under different contracts. Use network-specific currency codes, such as `pUSDC` for a Polygon-based asset, to avoid ambiguity.
{% endhint %}

| Parameter     | Mandatory | Description                                                                 |
| ------------- | --------- | --------------------------------------------------------------------------- |
| amount        | true      | String representation of requested amount.                                  |
| applicationId | false     | Application ID in case the application is used                              |
| customerId    | true      | Customer id in the merchant system                                          |
| orderId       | false     | Invoice id in the merchant system. If provided, used as an idempotency key. |
| currency      | true      | String representation of the requested currency.                            |
| address       | true      | Customer's crypto address to withdraw                                       |

{% code title="Payload example" %}

```
{
    "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
    "currency": "ETH",
    "amount": "0.1",
    "customerId": "test_customer_id"
}
```

{% endcode %}

{% hint style="info" %}
Ensure that no additional parameters, except those specified above, are passed into the withdrawal request.
{% endhint %}

### General API specification

{% hint style="warning" %}
**Withdrawal currency** must be specified using the unique currency code from the [supported currencies list](https://docs.xgateway.tech/overview/readme/supported-currencies) (see the *Currency* column there). Cryptocurrencies with the same currency symbol can be deployed on different networks and under different contracts. Use network-specific currency codes, such as `pUSDC` for a Polygon-based asset, to avoid ambiguity.
{% endhint %}

## Creates a withdrawal request (V2).

> Creates a withdrawal request.\
> \
> Access to this endpoint requires a valid API key. The API key is sent in the \`x-api-key\` header\
> on requests.

```json
{"openapi":"3.0.0","info":{"title":"x-gateway-external-api","version":"0.0.1"},"servers":[{"url":"https://api.xgateway.tech/api/v2"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"in":"header","name":"x-api-key","type":"apiKey"}},"schemas":{"AppSuccessResponse_string_":{"description":"The AppSuccessResponse object contains general information about the success execution.","properties":{"success":{"type":"boolean","default":true},"data":{"type":"string"}},"required":["success","data"],"type":"object","additionalProperties":false},"AppErrorResponse":{"description":"The AppErrorResponse object contains general information about the error message.","properties":{"success":{"type":"boolean","default":false},"errors":{"items":{"$ref":"#/components/schemas/IAppError"},"type":"array"}},"required":["success","errors"],"type":"object","additionalProperties":false},"IAppError":{"description":"The IAppError interface represents an application error message.","properties":{"code":{"anyOf":[{"$ref":"#/components/schemas/AppClientErrorResponseCode"},{"$ref":"#/components/schemas/AppServerErrorResponseCode"}]},"message":{"type":"string"}},"required":["code","message"],"type":"object","additionalProperties":false},"AppClientErrorResponseCode":{"type":"string","enum":["bad_request","db_violation","unauthorized","payment_required","forbidden","not_found","method_not_allowed","not_acceptable","proxy_authentication_required","request_timeout","conflict","db_unique_violation","gone","length_required","precondition_failed","payload_too_large","uri_too_long","unsupported_media_type","range_not_satisfiable","expectation_failed","misdirected_request","unprocessable_content","db_non_null_violation","locked","failed_dependency","upgrade_required","precondition_required","too_many_requests","request_header_fields_too_large","unavailable_for_legal_reasons"],"nullable":false,"description":"The AppClientErrorResponseCode object contains all client error response codes."},"AppServerErrorResponseCode":{"type":"string","enum":["internal_server_error","not_implemented","bad_gateway","service_unavailable","gateway_timeout","http_version_not_supported","variant_also_negotiates","insufficient_storage","loop_detected","not_extended","network_authentication_required"],"nullable":false,"description":"The AppServerErrorResponseCode object contains all server error response codes."},"AppAuthenticationErrorResponse":{"description":"The AppAuthenticationErrorResponse object contains general information about the authentication\nerror.","properties":{"success":{"type":"boolean","default":false},"errors":{"items":{"$ref":"#/components/schemas/IAppError"},"type":"array","default":[{"code":"unauthorized","message":"You do not have permission to access this resource."}]}},"required":["success","errors"],"type":"object","additionalProperties":false},"AppValidationErrorResponse":{"description":"The AppValidationErrorResponse object contains general information about the validation error.","properties":{"success":{"type":"boolean","default":false},"errors":{"items":{},"type":"array"}},"required":["success","errors"],"type":"object","additionalProperties":false},"CreateWithdrawalBody":{"properties":{"amount":{"type":"string"},"customerId":{"type":"string"},"applicationId":{"type":"string"},"orderId":{"type":"string"},"currency":{"$ref":"#/components/schemas/Currency"}},"required":["amount","customerId","currency"],"type":"object","additionalProperties":{}},"Currency":{"type":"string","enum":["USDC","USDT","BNB","bUSDT","BTC","ETH","eUSDC","eUSDT","FTN","POL","pUSDC","SOL","sUSDT","TRX","tUSDC","tUSDT","wpUSDC","wpUSDT","EUR","GBP","AZN","BDT","INR","JPY","PKR","RUB","TRY","UZS","AUD","BRL","CAD","CHF","CZK","DKK","KES","NOK","NZD","SEK","USD"],"description":"Represents all currencies in the payment processing system.\n\nUsed to specify the currency of accounts, exchange rates, and transactions in the payment\nprocessing system.\n\nIt provides a controlled and standardized list of supported currencies for all transactions and\nbalances in the payment processing system.\n\nNew currencies can be added to the payment processing system as additional members.\n\nSupported cryptocurrencies:\n- `BNB` - Binance Coin\n- `bUSDT` - Tether (pegged to USD), issued on BNB Smart Chain network (BEP20 token)\n- `BTC` - Bitcoin\n- `ETH` - Ether\n- `eUSDC` - USD Coin (pegged to USD), issued on Ethereum network (ERC20 token)\n- `eUSDT` - Tether (pegged to USD), issued on Ethereum network (ERC20 token)\n- `FTN` - Fasttoken\n- `POL` - POL\n- `pUSDC` - USD Coin (pegged to USD), issued on Polygon network (ERC20 token)\n- `SOL` - SOL\n- `sUSDT` - Tether (pegged to USD), issued on Solana network (SPL token)\n- `TRX` - Tronix (native coin), issued on Tron network\n- `tUSDC` - USD Coin (pegged to USD), issued on Tron network (TRC20 token)\n- `tUSDT` - Tether (pegged to USD), issued on Tron network (TRC20 token)\n- `wpUSDC` - wrapped USD Coin (pegged to USD), issued on Polygon network (ERC20 token)\n- `wpUSDT` - wrapped Tether (pegged to USD), issued on Polygon network (ERC20 token).\n\nSupported fiat currencies:\n- `AZN` - Azerbaijani Manat\n- `BDT` - Bangladeshi Taka\n- `EUR` - Euro\n- `GBP` - Pound Sterling\n- `INR` - Indian Rupee\n- `JPY` - Japanese Yen\n- `KES` - Kenyan Shilling\n- `PKR` - Pakistani Rupee\n- `RUB` - Russian Ruble\n- `TRY` - Turkish Lira\n- `USD` - United States Dollar\n- `UZS` - Uzbekistani Som."}}},"paths":{"/withdrawal":{"post":{"operationId":"CreateWithdrawalAsync","responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSuccessResponse_string_"}}}},"400":{"description":"Database violation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppAuthenticationErrorResponse"}}}},"402":{"description":"Payment required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppErrorResponse"}}}},"403":{"description":"Forbidden","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppErrorResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppErrorResponse"}}}},"422":{"description":"Unprocessable content","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppValidationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppErrorResponse"}}}}},"description":"Creates a withdrawal request.\n\nAccess to this endpoint requires a valid API key. The API key is sent in the `x-api-key` header\non requests.","summary":"Creates a withdrawal request (V2).","tags":["Withdrawal"],"parameters":[],"requestBody":{"description":"- The input that contains the request data.\n\n__Crypto__:\n- __applicationId__  - The associated application ID.\n- __orderId__        - The order ID, that will be used to track the request.\n- __customerId__     - The ID of a customer who requests the withdrawal.\n- __currency__       - The currency of a withdrawal request.\n- __address__        - The recipient address.\n- __amount__         - The amount to be withdrawn.\n\n__Peer-to-peer__:\n- __applicationId__      - The associated application ID.\n- __orderId__            - The order ID, that will be used to track the request.\n- __customerId__         - The ID of a customer who requests the withdrawal.\n- __currency__           - The currency of a withdrawal request.\n- __recipient__          - The recipient, if the free form is selected.\n- __amount__             - The amount to be withdrawn.\n- __bankAccountName__    - The bank account name, if the bank account transfer is selected (optional for INR IMPS).\n- __bankAccountNumber__  - The bank account number, if the bank account transfer is selected.\n- __bankName__           - The bank name, if the bank account or phone number transfer is selected (optional for INR IMPS).\n- __bankIfscCode__       - The IFSC code, required for INR IMPS bank transfers.\n- __cardHolderName__     - The cardholder's name, if the card transfer is selected.\n- __cardNumber__         - The card number, if the card transfer is selected.\n- __phoneNumber__        - The phone number, if the phone number transfer is selected.\n- __paymentSystem__      - The payment system (e.g., \"IMPS\" for INR bank transfers).\n- __comment__            - The additional comment.\n\n__SEPA Secure__:\n- __amount__          - The amount to be withdrawn in cryptocurrency.\n- __applicationId__   - The associated application ID.\n- __currency__        - The fiat currency that the customer will receive to their bank account.\n- __customerId__      - The ID of a customer who requests the withdrawal.\n- __orderId__         - The order ID, that will be used to track the request.\n\n__Peer-to-peer2__:\n- __applicationId__              - The associated application ID.\n- __orderId__                    - The order ID, that will be used to track the request.\n- __customerId__                 - The ID of a customer who requests the withdrawal.\n- __currency__                   - The currency of a withdrawal request. Should be INR.\n- __amount__                     - The amount to be withdrawn.\n- __beneficiaryAccountNumber__   - The bank account number of the beneficiary.\n- __beneficiaryIfsc__            - The IFSC code of the beneficiary's bank branch.\n- __beneficiaryMobileNumber__    - The mobile number of the beneficiary, required for mobile-based transactions.\n- __beneficiaryName__            - The full name of the beneficiary as registered in their bank.\n- __beneficiaryVpa__             - Optional Virtual Payment Address (VPA) for UPI transactions.\n- __purpose__                    - Description of the purpose of the transaction.\n- __transferMode__               - Specifies the mode of transfer such as IMPS, RTGS, or UPI.\n- __comment__                    - Only applicable for RTGS transactions. Special characters are not allowed.\n\n__Peer-to-peer3__:\n- __applicationId__              - The associated application ID.\n- __orderId__                    - The order ID, that will be used to track the request.\n- __customerId__                 - The ID of a customer who requests the withdrawal.\n- __currency__                   - The currency of a withdrawal request. Should be TRY.\n- __amount__                     - The amount to be withdrawn.\n- __beneficiaryAccountNumber__   - The bank account number of the beneficiary.\n- __beneficiaryName__            - The full name of the beneficiary as registered in their bank.\n- __beneficiaryEmail__           - The email of the beneficiary as registered in their bank.\n- __comment__                    - Only applicable for RTGS transactions. Special characters are not allowed.","required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWithdrawalBody","description":"- The input that contains the request data.\n\n__Crypto__:\n- __applicationId__  - The associated application ID.\n- __orderId__        - The order ID, that will be used to track the request.\n- __customerId__     - The ID of a customer who requests the withdrawal.\n- __currency__       - The currency of a withdrawal request.\n- __address__        - The recipient address.\n- __amount__         - The amount to be withdrawn.\n\n__Peer-to-peer__:\n- __applicationId__      - The associated application ID.\n- __orderId__            - The order ID, that will be used to track the request.\n- __customerId__         - The ID of a customer who requests the withdrawal.\n- __currency__           - The currency of a withdrawal request.\n- __recipient__          - The recipient, if the free form is selected.\n- __amount__             - The amount to be withdrawn.\n- __bankAccountName__    - The bank account name, if the bank account transfer is selected (optional for INR IMPS).\n- __bankAccountNumber__  - The bank account number, if the bank account transfer is selected.\n- __bankName__           - The bank name, if the bank account or phone number transfer is selected (optional for INR IMPS).\n- __bankIfscCode__       - The IFSC code, required for INR IMPS bank transfers.\n- __cardHolderName__     - The cardholder's name, if the card transfer is selected.\n- __cardNumber__         - The card number, if the card transfer is selected.\n- __phoneNumber__        - The phone number, if the phone number transfer is selected.\n- __paymentSystem__      - The payment system (e.g., \"IMPS\" for INR bank transfers).\n- __comment__            - The additional comment.\n\n__SEPA Secure__:\n- __amount__          - The amount to be withdrawn in cryptocurrency.\n- __applicationId__   - The associated application ID.\n- __currency__        - The fiat currency that the customer will receive to their bank account.\n- __customerId__      - The ID of a customer who requests the withdrawal.\n- __orderId__         - The order ID, that will be used to track the request.\n\n__Peer-to-peer2__:\n- __applicationId__              - The associated application ID.\n- __orderId__                    - The order ID, that will be used to track the request.\n- __customerId__                 - The ID of a customer who requests the withdrawal.\n- __currency__                   - The currency of a withdrawal request. Should be INR.\n- __amount__                     - The amount to be withdrawn.\n- __beneficiaryAccountNumber__   - The bank account number of the beneficiary.\n- __beneficiaryIfsc__            - The IFSC code of the beneficiary's bank branch.\n- __beneficiaryMobileNumber__    - The mobile number of the beneficiary, required for mobile-based transactions.\n- __beneficiaryName__            - The full name of the beneficiary as registered in their bank.\n- __beneficiaryVpa__             - Optional Virtual Payment Address (VPA) for UPI transactions.\n- __purpose__                    - Description of the purpose of the transaction.\n- __transferMode__               - Specifies the mode of transfer such as IMPS, RTGS, or UPI.\n- __comment__                    - Only applicable for RTGS transactions. Special characters are not allowed.\n\n__Peer-to-peer3__:\n- __applicationId__              - The associated application ID.\n- __orderId__                    - The order ID, that will be used to track the request.\n- __customerId__                 - The ID of a customer who requests the withdrawal.\n- __currency__                   - The currency of a withdrawal request. Should be TRY.\n- __amount__                     - The amount to be withdrawn.\n- __beneficiaryAccountNumber__   - The bank account number of the beneficiary.\n- __beneficiaryName__            - The full name of the beneficiary as registered in their bank.\n- __beneficiaryEmail__           - The email of the beneficiary as registered in their bank.\n- __comment__                    - Only applicable for RTGS transactions. Special characters are not allowed."}}}}}}}}
```

### Callback on Withdraw request

The system will send a callback when the request is processed. The callback will have a special type and will be sent to the same URL that is used for deposit callbacks. More information can be found on [this page](https://docs.xgateway.tech/miscellaneous/how-to-process-the-callback/transaction-callback-for-deposit-and-withdraw).

### Idempotency

This API uses orderId as an idempotency key. If this parameter is provided, the system prevents double spending in case of network error or processing failure. For withdrawal requests this field must be unique.&#x20;
