各业务线要求的 KYC 层级
返回各业务线要求的 KYC 层级。别在你这边硬编码一张表 —— 门槛会变。
参数
这个端点不收任何参数 ——
路径、查询、请求体都没有。鉴权头(x-auth-token)与代会员头
(x-on-behalf-of)的通用约定见
鉴权与签名。
响应
{
"requirements": [
{
"business": "remittance.express",
"required_level": 1
},
{
"business": "remittance.pobo",
"required_level": 2
},
{
"business": "card",
"required_level": 1
},
{
"business": "exchange",
"required_level": 0
},
{
"business": "earn",
"required_level": 0
}
]
}insufficient_scope 缺 kyc:read深入说明
覆盖哪些线(2026-08-13 补齐)
remittance.express · remittance.pobo · card · exchange · earn · withdraw · transfer.send · transfer.receive · qrpay
⚠ 后四条此前不在这张表里,而它们都有 KYC 闸 —— 照「用这个端点」去做的商户对它们查不到条目(等于 0),于是不做预校验,然后用户走完全流程才在最后一步被拒。
⚠ 转账收发是两行(transfer.send / transfer.receive):合成一行取严会把一个只收不发的会员判成不够格。
⚠ card 这一条按你看得见的卡产品取最低值,不是恒为 1 ——卡产品可以要求 L2。
⚠ 扫码付的 required_level 是 0,别照它放行到底
它的闸不是一个等级,是一条累计触发线:未过 L1 的会员可以一直付,直到累计消费超过 kyc_trigger_amount 那一刻才要求 L1。
所以这一条会多给两个字段:
kyc_trigger_amount—— 最小单位整数串(没有触发线时这个字段不出现)kyc_trigger_level—— 超过之后要求的等级(1)
把它写成 required_level: 1 是高报,会把一个现在完全可以付款的用户挡在门外;只看 required_level: 0 则是漏判,用户会在某一笔突然被拒。两个数一起用。
这不是「这条线能不能用」
本端点只回答要几级。可用性(线有没有开通、是否被停售)走GET /v1/merchant/lines —— 一行配置都没有时这里照样给 0,不代表那条线开着。以商户自身调用(不带 x-on-behalf-of),返回的是「按你的配置,每条业务至少要几级」。拿它在下单前做预校验,比让会员撞kyc_required 再回头补件体验好得多。
五条固定出现:remittance.express(1)、remittance.pobo(2)、card(1)、exchange(读你的兑换配置)、earn(你可见的在售理财产品里最低那一档 —— 回答的是「至少要几级才能开始买」,不是「买遍全部产品要几级」)。
⚠ 顶层键是 requirements 而不是 data(历史遗留)。
这些是准入规则,属风控,你只读。数字会随后台配置变化,别写死在代码里。
curl -X GET 'https://api.zise.com/v1/kyc/requirements' \
-H 'x-auth-token: Bearer $TOKEN'const res = await fetch("https://api.zise.com/v1/kyc/requirements", {
method: "GET",
headers: {
"x-auth-token": "Bearer $TOKEN",
},
});
// 金额按字符串读,别让它变成 number
const data = await res.json();import requests
res = requests.get(
"https://api.zise.com/v1/kyc/requirements",
headers={
"x-auth-token": "Bearer $TOKEN",
},
)
# 金额用 Decimal(str(...)),不要 float
data = res.json()req, _ := http.NewRequest("GET", "https://api.zise.com/v1/kyc/requirements",
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/kyc/requirements"))
.header("x-auth-token", "Bearer $TOKEN")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
// 金额字段用 String / BigDecimal,不要 double$ch = curl_init('https://api.zise.com/v1/kyc/requirements');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'x-auth-token: Bearer $TOKEN',
],
]);
$res = curl_exec($ch);
// 金额用 bcmath / 字符串,不要 floatval
{
"requirements": [
{
"business": "remittance.express",
"required_level": 1
},
{
"business": "remittance.pobo",
"required_level": 2
},
{
"business": "card",
"required_level": 1
},
{
"business": "exchange",
"required_level": 0
},
{
"business": "earn",
"required_level": 0
}
]
}