提现列表(游标分页 + 四个筛选)
商户自身
以商户主体调用。x-on-behalf-of 在这里是可选的:
带了 = 只看这个会员的,不带 = 看你名下全部。
── 这个端点存在的理由,是一个具体的坏情况 ──
POST /v1/withdrawals 网络超时、你没拿到单号时:24 小时内用同一把
x-idempotency-key 重投能原样拿回首次的响应;**超过 24 小时同键重投
就是第二笔真实扣账** —— 幂等记录过期之后请求会落到执行支,我方现场
生成新单号、新的账本幂等键,库里没有任何一层拦得住。
而这条线动的是真钱:会员的 available 已经进了 withdrawing 桶。
在这个端点存在之前,那一刻你在开放 API 上没有任何按会员 / 时间 /
状态找回第一笔的通道,只能登商户后台肉眼翻。所以:**重投之前先用
x-on-behalf-of + from 查一次**,确认那一笔在不在。
⚠ to 是开区间(< to),from 是闭区间;两者比的都是
created_at,与游标同一列,可以直接拿来做增量。
⚠ 出参与 GET /v1/withdrawals/{id} 逐字段同形(同一组键、
同一种金额形态)——amount 是「该资产 ledger_scale 位的定点整数串」,
不是插好小数点的十进制数。
查询参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
limit |
integer | 可选 | 缺省 20,上限 100。 |
cursor |
string | 可选 | 上一页的 next_cursor 原样回传。 |
status |
string | 可选 | locked / settled / failed 三选一。
⚠ 这是封闭枚举(库级约束就这三档),传别的直接 400
invalid_fields —— 给空列表的话,你正在核对失败单时会据此
认为"一笔失败的都没有"。 |
asset |
string | 可选 | 按资产过滤,自动转大写。 |
from |
string | 可选 | 起始时间(含),ISO-8601。比的是 created_at。 |
to |
string | 可选 | 结束时间(不含),ISO-8601。 |
请求头
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
x-on-behalf-of |
string | 可选 | 带上 = 只看这个会员的提现;省略 = 你名下全部。 刻意做成可选 —— 上面那个场景里你恰恰不知道是哪个会员 (连单号都没拿到)。 |
响应
200OK
{
"data": [
{
"id": "wdr_9f1c0b2a-4d33-4a51-9f2e-7c1b0a5d6e88",
"external_member_id": "u_10023",
"asset": "USDT",
"amount": "200000000",
"ledger_scale": 6,
"to_address": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
"status": "locked",
"created_at": "2026-08-12T09:31:02.881Z"
}
],
"next_cursor": null,
"has_more": false
}400
invalid_fields status 不在三档内 /
from 或 to 不是合法 ISO-8601404
member_not_found 带了 x-on-behalf-of 但那个会员不存在 /
属于别的商户 / 已停用请求
curl -X GET 'https://api.zise.com/v1/withdrawals' \
-H 'x-auth-token: Bearer $TOKEN'const res = await fetch("https://api.zise.com/v1/withdrawals", {
method: "GET",
headers: {
"x-auth-token": "Bearer $TOKEN",
},
});
// 金额按字符串读,别让它变成 number
const data = await res.json();import requests
res = requests.get(
"https://api.zise.com/v1/withdrawals",
headers={
"x-auth-token": "Bearer $TOKEN",
},
)
# 金额用 Decimal(str(...)),不要 float
data = res.json()req, _ := http.NewRequest("GET", "https://api.zise.com/v1/withdrawals",
nil)
req.Header.Set("x-auth-token", "Bearer $TOKEN")
res, err := http.DefaultClient.Do(req)
// 金额字段用 string 接,不要 float64HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.zise.com/v1/withdrawals"))
.header("x-auth-token", "Bearer $TOKEN")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
// 金额字段用 String / BigDecimal,不要 double$ch = curl_init('https://api.zise.com/v1/withdrawals');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'x-auth-token: Bearer $TOKEN',
],
]);
$res = curl_exec($ch);
// 金额用 bcmath / 字符串,不要 floatval
200
{
"data": [
{
"id": "wdr_9f1c0b2a-4d33-4a51-9f2e-7c1b0a5d6e88",
"external_member_id": "u_10023",
"asset": "USDT",
"amount": "200000000",
"ledger_scale": 6,
"to_address": "0x5aAeb6053F3E94C9b9A09f33669435E7Ef1BeAed",
"status": "locked",
"created_at": "2026-08-12T09:31:02.881Z"
}
],
"next_cursor": null,
"has_more": false
}