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

# Withdraw (Manual)

> This API is used to create a manual withdrawal transaction request.

## Authentication

<ParamField header="signatureToken" type="string" required>
  A JWT token required for API authentication.
  Generate JWT token as explained in section <a href="/en/authentication/generate-jwt-token">Generate JWT Token</a> using empty string.
</ParamField>

## Headers

<ParamField header="Content-Type" type="string" required>
  Must be set to `application/json`.
</ParamField>

## Request Body

<ParamField body="currency" type="string" required>
  Assets Currency id.
</ParamField>

<ParamField body="amount" type="string" required>
  Provide amount for transaction.
</ParamField>

<ParamField body="address" type="string" required>
  The external address where funds will be sent.
</ParamField>

<ParamField body="orderId" type="string" required>
  Include the orderId in your request for reference.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl --request POST \
    --url https://doc-api.oppiwallet.com/api/v1/manualWithdraw \
    --header 'signatureToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
    --header 'Content-Type: application/json' \
    --data '{
      "currency": "6698aec7f188ae24c673da1c",
      "amount": "0.01",
      "orderId": "ORDER_1"
    }'
  ```

  ```javascript JavaScript theme={null}
  const axios = require('axios');

  let data = JSON.stringify({
    "currency": "6698aec7f188ae24c673da1c",
    "amount": "0.01",
    "orderId": "ORDER_1"
  });

  let config = {
    method: 'post',
    maxBodyLength: Infinity,
    url: 'https://doc-api.oppiwallet.com/api/v1/manualWithdraw',
    headers: { 
      'signatureToken': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1cmkiOiJjcmVhdGVUcmFuc2FjdGlvblJlcXVlc3QiLCJpYXQiOjE3MTUxNTM2NTQsImV4cCI6MTcxNTE1MzcwOSwia2V5Ijoicmh0TmJELU9yTFQteFp3M3QtMkpFWnR4Iiwic2lnbmF0dXJlU3RyaW5nIjoiMWVjY2M1NDc0YWZiMzU4NDExNDEzNjBkOGQ0MDBlMWYxOWIzNRjYzVkM2YxNTRjNmQ5YjViNSJ9.JuF7d8Oc4EyMvm7s5g3CN9L9Wbl_TFI_yO8jt20dvHw',
      'Content-Type': 'application/json'
    },
    data: data
  };

  axios.request(config)
    .then((response) => {
      console.log(JSON.stringify(response.data));
    })
    .catch((error) => {
      console.log(error);
    });
  ```

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

  url = "https://doc-api.oppiwallet.com/api/v1/manualWithdraw"

  headers = {
      "signatureToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
      "Content-Type": "application/json"
  }

  data = {
      "currency": "6698aec7f188ae24c673da1c",
      "amount": "0.01",
      "orderId": "ORDER_1"
  }

  response = requests.post(url, headers=headers, json=data)
  print(response.json())
  ```

  ```go Go theme={null}
  package main

  import (
  	"bytes"
  	"encoding/json"
  	"fmt"
  	"net/http"
  	"io/ioutil"
  )

  func main() {
  	url := "https://doc-api.oppiwallet.com/api/v1/manualWithdraw"

  	data := map[string]string{
  		"currency": "6698aec7f188ae24c673da1c",
  		"amount":   "0.01",
  		"orderId":  "ORDER_1",
  	}

  	jsonData, _ := json.Marshal(data)

  	req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
  	req.Header.Add("signatureToken", "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...")
  	req.Header.Add("Content-Type", "application/json")

  	res, _ := http.DefaultClient.Do(req)
  	defer res.Body.Close()
  	body, _ := ioutil.ReadAll(res.Body)

  	fmt.Println(string(body))
  }
  ```

  ```php PHP theme={null}
  <?php
  $curl = curl_init();

  $data = [
      "currency" => "6698aec7f188ae24c673da1c",
      "amount" => "0.01",
      "orderId" => "ORDER_1"
  ];

  curl_setopt_array($curl, [
    CURLOPT_URL => "https://doc-api.oppiwallet.com/api/v1/manualWithdraw",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_ENCODING => "",
    CURLOPT_MAXREDIRS => 10,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_HTTPHEADER => [
      "signatureToken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
      "Content-Type: application/json"
    ],
    CURLOPT_POSTFIELDS => json_encode($data),
  ]);

  $response = curl_exec($curl);
  $err = curl_error($curl);

  curl_close($curl);

  if ($err) {
    echo "cURL Error #:" . $err;
  } else {
    echo $response;
  }
  ?>
  ```
</RequestExample>

## Response

Returns a success message upon successful request.

<ResponseField name="message" type="string" required>
  Success message for the withdrawal request.
</ResponseField>

<ResponseField name="transactionId" type="string" required>
  Unique identifier for the transaction.
</ResponseField>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "message": "Your withdrawal request has been sent successfully.",
    "transactionId": "0866f8-4a53-4579-9274-351ec868a627"
  }
  ```

  ```json 400 Bad Request theme={null}
  {
    "message": "Error message"
  }
  ```

  ```json 422 Unprocessable Entity theme={null}
  {
    "message": "Your withdrawal transaction has failed.",
    "transactionId": "0866f8-4a53-4579-9274-351ec868a627"
  }
  ```
</ResponseExample>
