curl --request POST \
--url https://waffo.com/api/v1/withdraw/create \
--header 'Content-Type: application/json' \
--data '
{
"withdrawRequestId": "<string>",
"currency": "<string>",
"amount": "<string>",
"description": "<string>",
"merchantInfo": {
"merchantId": "<string>",
"subMerchantId": "<string>"
},
"withdrawRequestedAt": "<string>",
"notifyUrl": "<string>",
"extendInfo": "<string>",
"accountNo": "<string>",
"bankAccountId": 123
}
'import requests
url = "https://waffo.com/api/v1/withdraw/create"
payload = {
"withdrawRequestId": "<string>",
"currency": "<string>",
"amount": "<string>",
"description": "<string>",
"merchantInfo": {
"merchantId": "<string>",
"subMerchantId": "<string>"
},
"withdrawRequestedAt": "<string>",
"notifyUrl": "<string>",
"extendInfo": "<string>",
"accountNo": "<string>",
"bankAccountId": 123
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
withdrawRequestId: '<string>',
currency: '<string>',
amount: '<string>',
description: '<string>',
merchantInfo: {merchantId: '<string>', subMerchantId: '<string>'},
withdrawRequestedAt: '<string>',
notifyUrl: '<string>',
extendInfo: '<string>',
accountNo: '<string>',
bankAccountId: 123
})
};
fetch('https://waffo.com/api/v1/withdraw/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://waffo.com/api/v1/withdraw/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'withdrawRequestId' => '<string>',
'currency' => '<string>',
'amount' => '<string>',
'description' => '<string>',
'merchantInfo' => [
'merchantId' => '<string>',
'subMerchantId' => '<string>'
],
'withdrawRequestedAt' => '<string>',
'notifyUrl' => '<string>',
'extendInfo' => '<string>',
'accountNo' => '<string>',
'bankAccountId' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://waffo.com/api/v1/withdraw/create"
payload := strings.NewReader("{\n \"withdrawRequestId\": \"<string>\",\n \"currency\": \"<string>\",\n \"amount\": \"<string>\",\n \"description\": \"<string>\",\n \"merchantInfo\": {\n \"merchantId\": \"<string>\",\n \"subMerchantId\": \"<string>\"\n },\n \"withdrawRequestedAt\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"extendInfo\": \"<string>\",\n \"accountNo\": \"<string>\",\n \"bankAccountId\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://waffo.com/api/v1/withdraw/create")
.header("Content-Type", "application/json")
.body("{\n \"withdrawRequestId\": \"<string>\",\n \"currency\": \"<string>\",\n \"amount\": \"<string>\",\n \"description\": \"<string>\",\n \"merchantInfo\": {\n \"merchantId\": \"<string>\",\n \"subMerchantId\": \"<string>\"\n },\n \"withdrawRequestedAt\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"extendInfo\": \"<string>\",\n \"accountNo\": \"<string>\",\n \"bankAccountId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://waffo.com/api/v1/withdraw/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"withdrawRequestId\": \"<string>\",\n \"currency\": \"<string>\",\n \"amount\": \"<string>\",\n \"description\": \"<string>\",\n \"merchantInfo\": {\n \"merchantId\": \"<string>\",\n \"subMerchantId\": \"<string>\"\n },\n \"withdrawRequestedAt\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"extendInfo\": \"<string>\",\n \"accountNo\": \"<string>\",\n \"bankAccountId\": 123\n}"
response = http.request(request)
puts response.read_body{
"code": 0,
"msg": "success",
"data": {
"withdrawRequestId": "<string>",
"withdrawOrderId": "<string>",
"status": "<string>",
"amount": "<string>",
"currency": "<string>",
"beforeAvailableBalance": "<string>",
"afterAvailableBalance": "<string>",
"receiveCurrency": "<string>",
"expectedReceiveAmount": "<string>",
"feeCurrency": "<string>",
"fee": "<string>"
}
}Post apiv1withdrawcreate
curl --request POST \
--url https://waffo.com/api/v1/withdraw/create \
--header 'Content-Type: application/json' \
--data '
{
"withdrawRequestId": "<string>",
"currency": "<string>",
"amount": "<string>",
"description": "<string>",
"merchantInfo": {
"merchantId": "<string>",
"subMerchantId": "<string>"
},
"withdrawRequestedAt": "<string>",
"notifyUrl": "<string>",
"extendInfo": "<string>",
"accountNo": "<string>",
"bankAccountId": 123
}
'import requests
url = "https://waffo.com/api/v1/withdraw/create"
payload = {
"withdrawRequestId": "<string>",
"currency": "<string>",
"amount": "<string>",
"description": "<string>",
"merchantInfo": {
"merchantId": "<string>",
"subMerchantId": "<string>"
},
"withdrawRequestedAt": "<string>",
"notifyUrl": "<string>",
"extendInfo": "<string>",
"accountNo": "<string>",
"bankAccountId": 123
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
withdrawRequestId: '<string>',
currency: '<string>',
amount: '<string>',
description: '<string>',
merchantInfo: {merchantId: '<string>', subMerchantId: '<string>'},
withdrawRequestedAt: '<string>',
notifyUrl: '<string>',
extendInfo: '<string>',
accountNo: '<string>',
bankAccountId: 123
})
};
fetch('https://waffo.com/api/v1/withdraw/create', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://waffo.com/api/v1/withdraw/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'withdrawRequestId' => '<string>',
'currency' => '<string>',
'amount' => '<string>',
'description' => '<string>',
'merchantInfo' => [
'merchantId' => '<string>',
'subMerchantId' => '<string>'
],
'withdrawRequestedAt' => '<string>',
'notifyUrl' => '<string>',
'extendInfo' => '<string>',
'accountNo' => '<string>',
'bankAccountId' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://waffo.com/api/v1/withdraw/create"
payload := strings.NewReader("{\n \"withdrawRequestId\": \"<string>\",\n \"currency\": \"<string>\",\n \"amount\": \"<string>\",\n \"description\": \"<string>\",\n \"merchantInfo\": {\n \"merchantId\": \"<string>\",\n \"subMerchantId\": \"<string>\"\n },\n \"withdrawRequestedAt\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"extendInfo\": \"<string>\",\n \"accountNo\": \"<string>\",\n \"bankAccountId\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://waffo.com/api/v1/withdraw/create")
.header("Content-Type", "application/json")
.body("{\n \"withdrawRequestId\": \"<string>\",\n \"currency\": \"<string>\",\n \"amount\": \"<string>\",\n \"description\": \"<string>\",\n \"merchantInfo\": {\n \"merchantId\": \"<string>\",\n \"subMerchantId\": \"<string>\"\n },\n \"withdrawRequestedAt\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"extendInfo\": \"<string>\",\n \"accountNo\": \"<string>\",\n \"bankAccountId\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://waffo.com/api/v1/withdraw/create")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"withdrawRequestId\": \"<string>\",\n \"currency\": \"<string>\",\n \"amount\": \"<string>\",\n \"description\": \"<string>\",\n \"merchantInfo\": {\n \"merchantId\": \"<string>\",\n \"subMerchantId\": \"<string>\"\n },\n \"withdrawRequestedAt\": \"<string>\",\n \"notifyUrl\": \"<string>\",\n \"extendInfo\": \"<string>\",\n \"accountNo\": \"<string>\",\n \"bankAccountId\": 123\n}"
response = http.request(request)
puts response.read_body{
"code": 0,
"msg": "success",
"data": {
"withdrawRequestId": "<string>",
"withdrawOrderId": "<string>",
"status": "<string>",
"amount": "<string>",
"currency": "<string>",
"beforeAvailableBalance": "<string>",
"afterAvailableBalance": "<string>",
"receiveCurrency": "<string>",
"expectedReceiveAmount": "<string>",
"feeCurrency": "<string>",
"fee": "<string>"
}
}Body
Withdraw request id sent from Merchant. It will also be used for idempotent check.
64Withdraw currency
1Withdraw amount
1Withdraw description information
128Merchant info
Show child attributes
Show child attributes
Merchant-side withdraw request time ISO_8601_FORMAT: yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
1The callback address to notify the merchant after the withdrawal is successful or failed
256^(http|https)://.*$Reserved. Json format e.g. {"key1":"value1", "key2":"value2"}
128The balance account number. (Typically, your company will have only one balance account for the same currency. However, in certain exceptional cases, such as when your company re-signs with a different entity from waffo, a new account may be generated according to the new contracting entity. Therefore, if you need to make a withdrawal for a specific account, you can specify that account for the withdrawal operation.)
Merchant bank account id selected under the withdrawal agreement. If empty, the default bank account of the agreement is used.
Was this page helpful?