Z Zise Developers

牌价(不建单、不要收款人

GET /v1/remit/rates scope: remittances:read
商户自身

一次拿到你名下全部可出款币种今天的价。**不建单、不冻结、不写库、

不要 x-on-behalf-of** —— 它回答的是「今天这条走廊多少钱」,

与具体哪个会员无关。

⚠ 这不是 GET /v1/exchange/pairs。那一个是站内兑换(会员在

我方账本内把 USDT 换成 USD),与汇款是两门生意。

为什么要有这个端点(以及在此之前你会怎么绕)

改造前唯一的汇率出口是 POST /v1/remit/quotes,而它**强制要

payee_id**。想做一张「今天 USD→PHP 多少」的牌价,你只有一条路:

给每条走廊预建一个假收款人当探针。那些探针会真的进我方的收款人库,

收款人主体是平台级共享的 —— 去重命中即 linked

你的探针会和真实用户关联到同一条主体上。别那么做,用这个端点。

两个价,都要读

  • indicative_rate 上游报的指示价。留给复盘
  • applied_rate 实际用来折算到账额的那个价。界面上显示它。

两者之间差的是我方对指示价的保守化(指示价系统性优于可成交报价)。

只读前者,你渲染出来的牌价会比用户真正拿到的好 —— 2026-08-10 我方

自己的验收实测这个差是 2.37%

⚠ 两个都不是成交价。真正的成交价在分发那一刻定,用户下单时设的

滑点上限罩着它。牌价是展示,不是承诺,别拿它去对账。

available: false 时看 reason

  • corridor_not_supported 这个币种不在你被授权的走廊里(或我方没开)。

可用清单以 GET /v1/remit/corridors 为准;

  • service_unavailable 我方此刻取不到价(结算币未配置、或上游不通)。

这不是错误,整个响应仍然是 200 —— 把汇率那一格标成不可用、

其余照常渲染即可,fee_bps / fee_fixed 在这一档仍然是准的。

手续费口径随牌价一起给

fee_bps / fee_fixed这条走廊的费率(到账币 == 我方结算币的

「稳定币直付」走另一套费率,我方已经在这里折算成同一个口径)。

别把两套混着展示 —— 界面上「费率 0.5%」与实扣对不上时,

用户的第一反应是被多扣了。

查询参数

字段类型必填说明
line "express" | "pobo" 可选 业务线。两条线可以配不同的结算币与费率。认不出的值按 express
asset string 可选 源资产。只影响 fee_fixed 的计价与 ledger_scale,不影响汇率本身。
currencies string 可选 逗号分隔的到账币种(三位大写),最多 100 个。 不传 = 整块牌价(你名下全部可出款币种,这是首页刷一屏的用法)。 ⚠ 逐项严格校形:其中任何一个不是三位大写字母都会整体 invalid_request。我方不会挑出合法的那几个默默继续 —— 那样你会把「我没答」读成「今天没有价」。

响应

200OK
{
  "line": "express",
  "source_asset": "USDT",
  "ledger_scale": 6,
  "settlement_currency": "USD",
  "truncated": false,
  "rates": [
    {
      "payout_currency": "GBP",
      "available": true,
      "reason": "",
      "indicative_rate": "0.7845",
      "applied_rate": "0.7750",
      "fee_bps": 30,
      "fee_fixed": "1.000000"
    },
    {
      "payout_currency": "PHP",
      "available": false,
      "reason": "corridor_not_supported",
      "indicative_rate": "",
      "applied_rate": "",
      "fee_bps": 30,
      "fee_fixed": "1.000000"
    }
  ]
}
400invalid_request currencies 里有不合形状的项,或超过 100 个 · product_not_available 这条线没开 / 该资产不可用于付款。
429rate_limited 这个端点有独立于全局的一道闸(每商户 60 次/分钟)。 未命中缓存时它会打上游,而上游的汇率接口与我方出款路径共用同一对 凭据 —— 被上游限速时,正在跑的付款会一起被拒,而那条路上的钱 已经冻了。带 Retry-After 退避即可。
请求
curl -X GET 'https://api.zise.com/v1/remit/rates' \
  -H 'x-auth-token: Bearer $TOKEN'
const res = await fetch("https://api.zise.com/v1/remit/rates", {
  method: "GET",
  headers: {
    "x-auth-token": "Bearer $TOKEN",
  },
});
// 金额按字符串读,别让它变成 number
const data = await res.json();
import requests

res = requests.get(
    "https://api.zise.com/v1/remit/rates",
    headers={
        "x-auth-token": "Bearer $TOKEN",
    },
)
# 金额用 Decimal(str(...)),不要 float
data = res.json()
req, _ := http.NewRequest("GET", "https://api.zise.com/v1/remit/rates",
    nil)
req.Header.Set("x-auth-token", "Bearer $TOKEN")
res, err := http.DefaultClient.Do(req)
// 金额字段用 string 接,不要 float64
HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://api.zise.com/v1/remit/rates"))
    .header("x-auth-token", "Bearer $TOKEN")
    .method("GET", HttpRequest.BodyPublishers.noBody())
    .build();
// 金额字段用 String / BigDecimal,不要 double
$ch = curl_init('https://api.zise.com/v1/remit/rates');
curl_setopt_array($ch, [
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'x-auth-token: Bearer $TOKEN',
  ],
]);
$res = curl_exec($ch);
// 金额用 bcmath / 字符串,不要 floatval
200
{
  "line": "express",
  "source_asset": "USDT",
  "ledger_scale": 6,
  "settlement_currency": "USD",
  "truncated": false,
  "rates": [
    {
      "payout_currency": "GBP",
      "available": true,
      "reason": "",
      "indicative_rate": "0.7845",
      "applied_rate": "0.7750",
      "fee_bps": 30,
      "fee_fixed": "1.000000"
    },
    {
      "payout_currency": "PHP",
      "available": false,
      "reason": "corridor_not_supported",
      "indicative_rate": "",
      "applied_rate": "",
      "fee_bps": 30,
      "fee_fixed": "1.000000"
    }
  ]
}