Skip to main content
v2.166 · 4 个版本

v2.166

新增
  • US/USD ach、wire 和 swift 出金现在必须明确提供用途目录值,只有 Other 才需要 purpose_detail;wire 也要求 beneficiary.account_type。新增扣款前的可操作校验错误,并记录创建时用途默认值移除这一不兼容变更。
  • 组织费用支付支持在 pay 时提供用途;费用导出支持经审计、按组织品牌生成的 XLSX,并复用列表过滤器。 修复
  • 已知的收款人、金额、最低金额、国家和用途错误不再返回不透明的 invalid_payload,而是返回稳定代码和字段级消息。

v2.165

变更
  • BO/BOB/bank_transfer payin 检测现为 push 优先:银行转账通知到达即确认入账,账单轮询作为幂等后备保留。GET /v1/payins/methods 在该走廊返回 delivery: "push+polling"。端点、字段、错误和 webhook 契约均无变化——集成继续收到相同的 payin_credited 事件。

v2.164

变更
  • vIBAN 和企业钱包读取现在会在安全可用时保留可操作且不含服务商 身份的 last_error 上游授权原因。HTTP 状态、错误代码、响应结构以及 重试和对账规则均不变。

v2.163

Added
  • 企业多银行存款账户支持 BO/BOB、MX/MXN 和 AR/ARS,包含本地 label、 每通道 50 个的软上限、精确余额与流水读取,以及第三方 KYC/KYB banking intent。
  • BO/BOB payout 和 QR confirm 支持显式 source_instrument_id,并对 ownership 和来源歧义 fail-closed。 Changed
  • AR 企业 CVU 可以延后设置 alias;设置前运营读取返回 alias_pending。
v2.162 · 1 个版本

v2.162

Changed
  • 金额达到 1,000 USD 的 BTC swap 现在会在执行前使用市场价格保护。 价格偏差时返回 422 guard_diverged;市场数据不可用时会带运营告警继续, 同时保留现有的执行价格保护。
  • 在 swap 指南和错误目录中记录了该保护及错误码。checkout/payin 内部转换 和 OTC 流程不适用此保护。
v2.161 · 1 个版本

v2.161

Changed
  • 新增管理员发起的成员密码恢复链接流程:POST /v1/auth/password/reset-link 兑换一次性、60 分钟有效的链接,验证成员邮箱、清除待注册状态并吊销所有 会话。门户已配置时,管理员触发接口返回 link_sent;未配置时诚实回退为 code_sent。
  • 注册现在返回不带会话的 pending_verification;请使用 POST /v1/auth/register/confirm 确认邮箱以获取首个会话。重复注册返回相同的响应。
  • 新增按账户划分的登录、密码找回与重置尝试限制。
v2.160 ? 1 version

2.160

Added
  • ???????????????? BRL pix ? bank_transfer payout??? hosted BR/BRL/pix payin??? 1 BRL????????????
  • ?? BRL ?????PIX key ???TED ???????????????????
  • 新增 PY/PYG、CO/COP 和 EC/USD 的供应商无关 payout 与 payin 通道说明; COP 只能使用整数,并记录付款人身份字段与 wallet hosted/collect 行为。
  • Contract PDF downloads support ?lang=es|en, expose available_langs, render counterparts from the frozen snapshot without a separate hash, require counsel for English, and use language-aware filenames.
v2.159 · 2 个版本

v2.159

新增
  • 手工 EC/USD push bank_transfer 收款确认现为两步 maker-checker:POST /v1/payins/{payinID}/confirm-received 创建待处理请求但不记账,POST /v1/payins/{payinID}/confirm-approve 由与 maker 不同的 god 批准并记账,POST /v1/payins/{payinID}/confirm-cancel 作废请求;新增 confirm_request_conflict 与 confirm_account_mismatch 错误码(HTTP 409)。

v2.158

新增
  • POST /v1/otp/challenges 新增可选 channel 字段(sms、whatsapp、email 或 totp)。省略时服务器按你的 OTP 偏好、组织默认值或 SMS 解析。响应返回解析后的 channel,以及 phone 字段中的脱敏目的地(email 挑战脱敏地址;TOTP 挑战返回字面量 authenticator_app)。
  • 挑战创建新增两种错误:未知值返回 400 invalid_channel;显式通道弱于该操作组织下限时返回 403 channel_locked_by_org(下限只会提升通道,绝不会降低)。显式指定 channel 还会停用自动回退到其他通道。
v2.157 · 1 个版本

v2.157

新增
  • 新增手工 EC/USD/bank_transfer payout 支持。符合条件的 payout 会以 processing 和 status_code=manual_dispatch 创建;运营人员通过 POST /v1/org/treasury/manual-payouts/{payoutID}/confirm-manual-paid 提交 bank_reference、paid_amount、reason 和 idempotency_key 确认银行结算。已付金额必须精确匹配,使用相同幂等键重放是安全的。
  • 新增已申报的 EC/USD/bank_transfer payin 支持。运营人员通过 POST /v1/payins/{payinID}/confirm-received 提交银行参考号和收到的金额;只有符合条件的待处理已申报 payin 才能确认,等价重放会返回 idempotency_hit: true。
v2.156 · 3 个版本

v2.156

新增
  • 为 payout 增加 provider-agnostic 的目的地拒绝保护:近期银行拒绝会在创建或扣款前返回 422 destination_recently_rejected;明确重试使用新的幂等键和 options.destination_retry_ack。
  • 合同公开验证:GET /verify/contracts/{code} 返回 Grupo CB 框架合同的已签署真伪声明(默认 JSON;Accept: text/html 时返回人工可读的 HTML 页面)。无需凭证;无效验证码返回通用 404;按 IP 限流。见 /zh/guides/contract-agreement。
  • 合同信封 JSON(账户与组织详情)新增 verify_code:印在最终 PDF 验证区中的公共验证码(二维码 + 含文档短哈希的说明)。

v2.154

新增
  • 新增资金账户中心:按币种(ARS、BOB、MXN、EUR)统一说明每个注资账户,含注资与 Banking 的区分、创建与读取。 变更
  • BO 虚拟账户的充值内容已并入资金账户中心;BOB payout 章节移至 payouts 指南。已删除独立的 BO 与 company-wallet 指南;重定向指向新位置。仅文档:API 行为无变化。
v2.153 · 1 个版本

v2.153

变更
  • 围绕两种本地法币目的地重构了 Banking 指南:注资账户(purpose fondeo,自动转换为你的主资产余额)与 Banking 账户(purpose banking,本地保留 BOB、MXN 和 ARS 余额用于 payouts),随后是每种货币一个小节(USD、EUR、BOB、MXN、ARS),并交叉链接到 payins、payouts、SEPA、vIBAN 和账户视图。USD 在所有文档中被描述为主资产,可随时用 PUT /v1/settlement 更改。仅文档:API 行为无变化。
  • 对照已实现的行为修正了相关指南和 spec:对账单只能用 format 参数请求(不支持 Accept 请求头);失败的转换将资金保留在收到时的资产中;已批准的卡收款以 USD 结算;卡会话打开上限为 10,000。仅文档:API 行为无变化。
v2.152 · 3 个版本

v2.152

变更
  • 围绕 USD 主结算币种重写货币模型及相关指南:新账户以 USD 结算,legacy 账户保留 USDT,十种 ledger 资产(USD、USDT、USDC、BTC、GOLD、SILVER、PLATINUM、BOB、MXN、ARS)按规范顺序列出并标注真实小数位。transfers、payins、checkout、refunds、swaps、对账单、banking 入金、analytics 与 FAQ 如今描述的都是 API 实际实现的行为。纯文档变更:API 行为不变。
  • 所有欧元主题合并为一个 Banking EUR 章节:入金(funding_usdt)与银行(banking_eur)虚拟 IBAN、申请与读取、第三方申请、BANK_EUR 余额、SEPA 发送与接收、错误与 FAQ。SEPA payout 页与 company-wallet 余额小节现指向该唯一来源,不再重复。纯文档变更:API 行为不变。

v2.151

新增
  • 公共错误索引扩充:环境 handoff(invalid_handoff、handoff_replayed)、2FA 与 passkey(channel_locked_by_org、passkey_exists、totp_already_enrolled)以及 checkout/payout 文档(materializing、invalid_file_name、unsupported_media_type),每项含 HTTP 状态与修复方法。纯文档变更:API 行为不变。

v2.150

新增
  • 合同信封新增客户手写签名。签署 endpoint 接受必填的 Base64 PNG signature_png,可带 data:image/png;base64, 前缀;无效或空白图片以及 超过大小、尺寸或墨迹像素限制时返回 422 invalid_signature_image。 有效签名会嵌入最终 PDF 的客户区块;信封详情只返回布尔值 has_client_signature,legacy 信封继续使用文字签名渲染。
v2.149 · 6 个版本

v2.149

新增
  • 将 Grupo CB 主协议 v13.4 纳入账户合同流程。西班牙语版本为当前生效 版本;英语版本仍是等待外部审核的 draft。
  • 合同详情现在返回冻结的 template_version 以及只追加的生命周期 events。 如果信封签发时使用了旧模板,签署会 fail-closed 并返回 422 contract_template_superseded;应先作废信封并重新签发,不能继续签署。
变更
  • 西班牙语法律合同删除哥伦比亚,新增 PIX 行,记录 API 指令接收回执的 p95/p99 延迟,并将每日截止时间固定为次日 00:00 UTC。

v2.148

变更
  • CL/CLP 银行转账 payout 现在会在任何扣款、冻结、payout 资源创建或派发 之前,使用 HTTP 400 和 invalid_amount 拒绝非整数金额,并返回消息 amount must be a whole number of CLP (this currency has no minor unit)。 30000 和 30000.00 等整数金额仍然接受。对于此类校验失败,不再出现 之前扣款后的 core_rejected / invalid payload 结果。

v2.147

新增
  • 新增组织管理员对 KYC/KYB 提交资料更新 banking intent 的支持。
  • 银行客户文档上传新增公开错误 unsupported_document_type 和 invalid_document_file。

v2.146

新增
  • 为 QR payin 增加可选幂等性:相同的 key 与等价 payload 会返回原始 charge,并带有 idempotency_hit: true;payload 不同则返回 409 idempotency_conflict。
  • 记录 400 invalid_idempotency_key、body 与 header 的优先级,以及 replay 时通过 GET 查询实时状态。

v2.145

新增
  • 已验证企业账户现在可以在门户中查看合同信封列表和详情:列表使用现有的 items 集合,详情显示只追加的 events 集合,每条事件的名称位于 event。
  • 合同通知邮件现在包含 “Ir a firmar”(西班牙语)/“Review and sign”(英语) 按钮以及纯文本门户链接 /contracts/{envelopeID};预签署 PDF 仍作为附件发送。
变更
  • 合同 PDF 采用组织品牌重新设计,包含全幅封面、状态徽章和页脚。
  • Grupo CB 主协议现在使用 v13.3 模板。协议正文不再嵌入固定价格表; 附录 A 指向客户当前有效的佣金计划,并按照与定价面板一致的本地化类别 对适用条目分组,例如法币支付、合规、卡片、银行业务、钱包和其他。
  • API 路径、响应字段、错误代码和 webhook 类型均未改变。

v2.144

变更
  • Grupo CB 主协议更新为 v13.2。缺少 effective pricing coverage 时, org-admin 签发会 fail-closed,返回 422 contract_unfillable 和 missing 数组;账户侧 snapshot 与 PDF 价格附录不显示内部 spread, org-admin 视图仍保留完整 snapshot。客户完成签署仪式后也会自动记录 contract_signed milestone。
v2.143 · 1 个版本

v2.143

新增
  • 新增已验证企业账户的 Grupo CB 主协议签署仪式:信封列表/详情/PDF/签署 endpoint、人工 session、明确同意、X-OTP-Token 一次性 OTP、 contract_envelope_completed 事件以及可操作的合同错误代码。
v2.142 · 3 个版本

v2.142

新增
  • payin 列表/详情响应、列表 instrument_id 筛选器和 payin_credited webhook 新增专用收款工具元数据(instrument_id 和 instrument)。新的入账 push 还可以返回银行报告的 payer 身份;没有 报告的数据保持省略。专用账户的付款人身份会进入现有 screening 流程, 可能进入人工审核。

v2.141

新增
  • 文档新增平台创建 AR/ARS 存款账户时必填的用户选择 bank_alias、PUT /v1/payins/deposit-accounts/bank-alias 重命名路由、格式与可操作的 422 alias_taken,并说明个人资料别名由已验证 姓名派生。

v2.140

新增
  • 在公共 corridor variants schema 中记录组织 scope 的 CL/CLP/bank_transfer 派发变体 direct 和 batched。没有 selector 行时,direct 仍是有效默认值;batched 受全局环境 gate 约束。
v2.139 · 3 个版本

v2.139

变更
  • 文档现在说明,已支付的玻利维亚 QR payin 可以在 GET /v1/payins/{payinID} 中返回银行报告的付款人身份,使用 payer_source: bank_event 和可选的 payer 字段。本次没有新增 endpoint、错误码或 webhook。

v2.138

新增
  • ARS 与 USD 银行 payout 支持在 beneficiary.account_number 中提交银行 alias;平台会在派发前解析,USD 仍仅支持 CBU。
  • AR/ARS 存款账户响应可在 22 位 CVU 旁返回可选字段 details.bank_alias。

v2.137

变更
  • 卡片发行文档现在说明可选的 cardholder.first_name 和 cardholder.last_name 卡面姓名覆盖值。省略时使用已批准的 KYC/KYB 资料;显式值优先,两个字段合计限制为 22 个 UTF-8 字节。
v2.136 · 4 versions

v2.136

变更
  • 更新公共费用配置 schema,加入 banking_monthly 并移除过时的 compliance_transaction 服务值。组织 pricing 的详细行为仍记录在私有 admin API 文档中。
  • admin pricing 现在在退回成功完成对账后收取 banking_return 费用,并按操作幂等。
本次没有新增公共 endpoint、错误码或数据库迁移。

v2.135

新增
  • 明确 Client Journey 运营属于组织管理员私有文档;本公共 API 版本不新增 Journey endpoint 或账户侧流程。

v2.134

修复
  • SEPA payout 和 EUR Banking 提现现在从客户选定的 vIBAN 扣款;资金账户 不再作为扣款来源。

v2.133

新增
  • EUR Banking 现在使用直接虚拟 IBAN 流程。账户无需先创建通用 Banking customer,即可请求 banking_eur vIBAN。
  • 通用 Banking customer onboarding 仅支持 USD;发送 currency: "EUR" 会返回 banking_eur_requires_viban,并指引集成方使用 Operar EUR。
v2.132 · 1 个版本

v2.132

变更
  • 新账户采用 USD 主资产:settlement_asset 与 payin_settlement_asset 默认使用 USD。明确设置为 legacy USDT 的已有账户保持不变,进行中的 操作不会重新报价。
  • 在支持这些字段的 settlement、payin、swap、checkout/POS 和卡片资产 表面加入 USD。USD 账本金额使用两位小数,USD↔USDT swap 按 1:1 计价。
  • 争议响应通过 hold_asset、disputed、held、disputed_usdt 和 held_usdt 区分实际 hold 资产及其归一化等值字段。
CBPay API 及本文档的每一次变更,最新的排在最前。 破坏性变更会提前公告,并标注为 Breaking。
v2.131 · 2 个版本

v2.131

新增
  • 新增阿根廷 payout 校验错误 invalid_cuit 和 invalid_cbu(HTTP 400) 的公开文档。请在 beneficiary.tax_id 发送 11 位 CUIT/CUIL,在 beneficiary.account_number 发送 22 位 CBU/CVU;USD 必须使用 CBU。 参见payout 错误。

v2.130

变更
  • EUR SEPA Banking 提现现在接受顶层结构化字段 beneficiary_type、beneficiary_given_name、beneficiary_first_surname、 可选的 beneficiary_middle_name 以及企业使用的 beneficiary_name。 平台会将这些字段随 operation request 转发,以便在派发前解析受益人身份; 其他银行通道可以省略这些字段。
v2.129 · 1 version

v2.129

新增
  • 充值目的地现在返回 purpose:默认的 fondeo 会把法币转换为 USDT,banking 会保留本地法币用于 payout。Banking 仅支持 BO/BOB、MX/MXN 和 AR/ARS bank_transfer;无效值返回 invalid_purpose。
v2.128 · 4 versions

v2.128

变更
  • BOB、MXN 和 ARS 法币 payout 现在可以从相同货币的本地法币余额扣款。 同币种结算使用 rate 1 且 settlement spread 为零。cross-fiat settlement 返回 pricing_unavailable,超过两位法币小数的金额返回 invalid_amount。GET /v1/rates 会将这些资产标记为 same_currency_only: true。

v2.127

变更
  • 新增可配置出金限额的公开错误文档:amount_below_minimum、amount_above_maximum 和 velocity_limit_exceeded。组织配置这些控制;未配置限额时不增加限制。

v2.126

新增
  • 新增按账户保留 BOB、MXN、ARS 本地法币收款,并返回实际资产字段。

v2.125

新增
  • 新增 BOB、MXN 和 ARS 两位小数账本资产。余额、history 和 analytics 现在会返回它们;相同资产转账保持支持,而 swaps、cards、checkout 和 POS 保留 v1 的显式拒绝 gate。
v2.124 · 3 个版本

v2.124

变更
  • 组织现在可以由平台 operator 启用新的 BOB 内部 QR 收款 route。公开 POST /v1/payins request、opaque charge response 和现有 payin_received webhook 保持不变;可用性按组织控制,集成方不能 选择内部 route。

v2.123

已更改
  • 明确本次 OTC Desk follow-up 仅面向组织管理员。没有改变公开客户集成 指南、endpoint contract 或客户 webhook 行为;公开 OTC Desk 指南为 N/A。

v2.122

新增
  • 在 API 参考中新增 Telegram OTC Desk callback (POST /v1/public/telegram/otc-desk/{orgID}/webhook)。该路径由 Telegram 调用,不是客户集成 webhook,Desk 也不会发出新的 webhook 事件。
v2.121 · 3 versions

v2.121

已更改
  • 修正 SEPA 来源门控:客户 payout 要求已分配且 active 的 funding_usdt 虚拟 IBAN,EUR Banking 提现使用 banking_eur。
  • 文档补充确定性来源选择、从 vIBAN registrant 服务端写入付款人身份、 legacy profile fallback,以及 funding_account_unavailable / registrant_incomplete 结果。

v2.120

变更
  • payin 汇率文档现在公开 payin_rate_source(lot 或 spot)以及 payin create/detail 响应中可选的 rate_source。USDT FIFO payin 库存 在入账时消费;库存不足时回退到 spot,不改变已经报价的入账金额。

v2.119

变更
  • 客户账户的 SEPA Instant payout 现在必须使用已分配且 active 的 funding_usdt 虚拟 IBAN。存在多个 active EUR 资金账户时使用可选字段 source_virtual_iban_id;付款人身份来自所选 vIBAN 的 registrant。
  • 文档新增 funding_account_required、ambiguous_source_viban 和 funding_account_unavailable 结果。
v2.118 · 2 个版本

v2.118

变更
  • 门户的专属收款优先流程:在 /payins/new 中,玻利维亚(BO)和 墨西哥(MX)现在始终显示账户的专属收款账户,与“我的账户”一致。 如果没有专属收款工具,门户会显示诚实的空状态,并引导用户创建账户或 完成身份验证;这些走廊不再在门户中提供预告转账的付款人选项。API 路由和 响应结构不变,集成方仍可使用预告转账的 POST /v1/payins。

v2.117

变更
  • US/USD 银行 payout 指南现在要求 ach、wire 和 swift 流程使用 PDF 支持文件。人工释放操作仅供运营方使用,不属于公开集成方 API; payout 创建以及现有状态/webhook 生命周期保持不变。
v2.116 · 1 个版本

v2.116

变更
  • 明确组织生成的争议证据包内容:卡 payin 的卡交易详情、FIFO 支出的 资金目的地以及商户完整的已验证 KYB/KYC 身份;付款人仍然经过掩码, 不包含原始 payload 或 PAN 相邻字段。
v2.115 · 6 个版本

v2.115

变更
  • 我的账户标签与说明:Fiat 选项卡现在显示为 法币到加密货币; URL slug 仍为 ?tab=fiat。Crypto、法币到加密货币和 Banking 选项卡现在 都包含简短说明,并提示收款账户只属于当前账户、不会与他人共享。当图标 表示网络时,TRON 和 Ethereum 使用各自的网络图标,而不是资产图标。 API 路由和 response shape 不变。

v2.114

变更
  • 管理员控制的验证恢复:当管理员停用或关闭账户时, POST /v1/me/verification/link 现在返回 403 account_blocked;当管理员 拒绝账户的 KYC/KYB 时返回 403 verification_rejected_requires_admin。 账户持有人必须联系管理员恢复账户或重新开放验证;仍在等待验证的账户 (none 或 pending)不受影响,approved 账户仍返回 409 already_verified。

v2.113

变更
  • QR payout 指南现在记录同步两步合同:不扣款 scan、幂等 confirm、 可选 settlement_asset,以及状态为临时状态时通过已有 payout 进行对账。

v2.112

变更
  • 争议操作仅接受已入账 payin:单笔打开案件和手动绑定导入行在 payin 不是 credited 时返回 409 payin_not_credited,不会创建冻结。 batch 和导入流程会按项目或行报告该情况。

v2.111

新增
  • 组织管理员现在可以从粘贴的 payin 标识符列表预览并确认打开争议。 流程会先解析唯一匹配,在冻结前暴露歧义,只打开已 credited payin, 并返回逐项幂等结果。

v2.110

新增
  • 新增欺诈与争议面板:账户只读案件/证据路由、组织管理员操作、预防性 冻结、双人审批关闭、处理器表格导入、不可变证据包和 dispute_status_changed。
  • 新增 disputes analytics、余额 disputed 和账单 disputes[]。 deadline worker 发出 T-7/T-3/expired 通知,但到期不移动资金。
v2.109 · 8 个版本

v2.109

变更
  • 我的账户 F2:/accounts 页面现在使用视觉选择器:Crypto(资产 → 网络)、Fiat(国家 → 转账资料卡)和 Banking(国家 → 账户)。美国 Banking 账户按 ACH、Wire 和 SWIFT 子选项卡分组。
  • 账户 hero 在有数据时显示持有人照片/姓名、alias 和账户 QR。Crypto 与 Banking 资料卡可以显示带组织品牌标识的 QR;Fiat 资料卡按设计不显示 QR。
  • Fiat 转账资料卡在 API 返回时显示持有人、银行、BO 商户 NIT 和收款号码, 支持逐字段复制与复制全部。选项卡和目的地可通过 ?tab=&sel= 深链 接入。
API
  • 存款账户响应新增可选字段 alias、merchant_nit 和 bank_name。 这些字段只有在收款通道提供时才会出现;客户端不应推断缺失值。

v2.108

新增
  • 账户集成新增 GET /v1/integration-status,企业需要已批准 KYB,个人需要 有效授权,并记录人工会话与相应 OTP 要求。
  • 密码注册、已验证 OAuth 新账户和邮箱变更现在记录全局 email_domain_blocked 策略。

v2.107

新增
  • Payout 响应、payout_status_changed、CSV 和回执现在会在银行报告后提供 新增的 uetr 与 imad tracking 字段。
  • Payout 指南说明这些标识与银行确认及公共交易 tracker 的关系。

v2.106

变更
  • 我的账户导航:CBPAY hero 现在进入三个可用 deep-link 的选项卡: Crypto 显示充值钱包,Fiat 显示 MX/CLABE、BO/BOB 与 EUR 充值 工具,Banking 显示 USD/EUR 银行账户、Banking 虚拟 IBAN 与企业 wallet。当前选项卡通过 ?tab= 反映在 URL 中。

v2.105

新增
  • 我的账户:门户现在提供统一的 /accounts 页面,集中显示账户 QR 与 alias、本地收款目的地、USD Banking 账户、EUR 虚拟 IBAN 与企业 wallet,以及加密货币充值钱包。每个分区保留现有的 QR、复制和分享 操作,并显示诚实的空状态或处理中状态。
变更
  • 门户中的 我的钱包 标签现在显示为 Wallets。钱包 ID、地址、 资产和只接收行为不变。
  • MX/CLABE 与 BO/BOB 收款目的地只有在账户 KYC/KYB 审核通过后才会 配置。现有 API 路由和响应结构不变。

v2.104

变更
  • 发卡方数据:POST /v1/cards 现在校验个人的 occupation 目录代码、 place_of_work 与非负 salary_usd;企业的 kind_of_business 目录代码; 以及指定人员的 occupation、place_of_work、salary_usd 和显式 pep。账户持卡人的 PEP 从 AML screening 派生;企业联系人、法定代表 与文件 URL 可从 KYB 自动补齐。职业和经营活动目录支持 ?q= 搜索。
错误
  • 新增 422 issuer_data_incomplete、422 screening_required 与 422 cardholder_name_too_long 文档覆盖;最后一个错误表示个人卡面 打印的名字与姓氏合计超过 22 个字符。

v2.103

变更
  • 自助身份验证安全:新的 KYC/KYB 入驻链接申请需要已确认的 TOTP 或已注册的通行密钥。开放链接会在 gate 前重新返回,API key 自动化仍然豁免。已注册 TOTP 时,即使组织没有为 login 启用 OTP,登录也会强制进入普通 OTP 流程。
错误
  • 新增 403 verification_requires_2fa,并提供 TOTP 或通行密钥的注册步骤。

v2.102

变更
  • 智利 CLP 银行转账现在可以在约五分钟的短窗口内进行批量派发。 POST /v1/payouts 仍返回 202 与 status: "processing";每笔 payout 仍保留自己的 payout_status_changed webhook 和最终状态。
v2.101 · 8 个版本

v2.101

变更
  • 客户对账单破坏性变更:GET /v1/reports/statement 不再返回原始账本 movements、各资产的 assets[].movements 或 summary.counts.movements。客户下载的 PDF/XLSX 不再包含 Movements 分区或工作表。请按产品分区并使用 balance_after 对账;org-admin 仍保留完整对账单,GET /v1/movements 继续作为深入审计路径。费用现在包含其 asset,period.timezone 返回组织的 IANA 时区,XLSX 工作表名称按 lang 本地化。

v2.100

新增
  • 通过 BO/BOB/bank_transfer 支持 BOB 收款账户。
变更
  • 个人账户每个走廊保留一个收款目的地;企业账户可使用不同的 idempotency_key 创建额外目的地,重复同一密钥会幂等重放。
  • 只有账户的 KYC/KYB 审核通过后才会配置收款账户。面向提供商的别名由服务器根据已验证姓名生成,收款账户路由与 payout 路由保持分离。

v2.99

变更
  • 账户交易审核上传现在接受可选的固定 category query 参数;此前 request-info 后,只要审核仍为 in_review,也可以继续上传证据。每次 上传都会显示在审核中并重置 maker-checker 的第一次批准;未知类别返回 400 invalid_category。当 portal base 可用时,request-info 邮件会直接 链接到 /reviews/{reviewID}。

v2.98

新增
  • 已验证企业的 EUR 钱包:持久化预留、账户与 org-admin 读取、实时余额和日期操作。
  • Core 钱包预留/状态/wallet/statement 路由,以及欧洲 EU/EUR/sepa OTC catalog。
变更
  • Banking EUR 虚拟 IBAN 余额现在返回 received_total,不再伪造每个 IBAN 的 available;企业可创建多个虚拟 IBAN,个人账户仍按 purpose 限制。
  • 组织费用接受 EUR,treasury 显示运营 EUR 钱包 source。
错误
  • 覆盖 wallet_not_ready、wallet_reservation_failed、wallet_reservation_status_failed、wallet_read_failed、wallet_statement_failed 和 virtual_iban_limit_reached。

v2.97

变更
  • 金属 settlement 防护加固:XPT/PLATINUM 执行参考价在可用时会使用 第二个独立的公开参考价。偏离超过 2% 时,该报价不再具备 settlement 资格;二级参考不可用时,现有参考价新鲜度 guard 仍然生效。现有 API 路径与 response shape 不变。
  • 更真实的汇率新鲜度:由参考源支持的汇率现在使用来源 payload 的 timestamp;超过七天默认容忍期的 payload 会在发布前被拒绝。
  • 金属卡默认值:SILVER 的默认缓冲和降级 haircut 为 3%;BTC 仍为 5%,GOLD 为 2%,PLATINUM 为 2%。组织级 override 仍可用。

v2.96

变更
  • SEPA Instant 简化为单一欧洲走廊:sepa 现在使用唯一的 EU/EUR 路由行。受益人的实际国家取自 IBAN;GB IBAN 会在派发前以 HTTP 400 快速拒绝。payout pricing 使用 country: "EU" 行。

v2.95

Added
  • 白银与铂金 ledger 资产:账户现在支持以六位小数记录精炼金属克数的 SILVER 与 PLATINUM 余额,并与 USDT、USDC、BTC、GOLD 一起使用。现有 swap、settlement、卡片消费、checkout、账单与 analytics 表面均支持扩展后的资产词汇。asset_prices 以金衡盎司提供 XAG/XPT,并以克提供 SILVER/PLATINUM。没有新增端点,也没有新增链上金属通道。

v2.94

变更
  • 委内瑞拉 C2P 收款:VE/VES/c2p 现在通过现有 collect endpoint 可用。付款人将银行生成的 claveDinamica 放在 otp 中;C2P 不要调用 /v1/payins/collect/otp。request 与 response shape 不变。 debito_inmediato 仍不可用。

v2.93

变更
  • 实体卡临时暂停时仅发行虚拟卡:POST /v1/cards 对新的 physical: true 请求返回 400 physical_temporarily_unavailable。 已发行的实体卡继续正常使用。对于个人账户,409 card_limit_reached 表示账户已经有一张有效卡或一条开放申请。
v2.92 · 4 个版本

v2.92

变更
  • SEPA Instant beneficiary 与 description 校验:SEPA description 会折叠到 provider charset,仍含不支持字符时返回 400 invalid_payload,wire 值最多 140 个 runes。姓名使用文档化的欧洲字符映射;个人必须有名字和姓氏, V1 不支持单名。

v2.91

新增
  • EUR SEPA Instant payout:sepa 方法现在在 payout 目录中为 35 个国家 提供(AT、BE、BG、HR、CY、CZ、DK、EE、FI、FR、DE、GR、HU、IE、IT、LV、 LT、LU、MT、NL、PL、PT、RO、SK、SI、ES、SE、IS、LI、NO、CH、MC、SM、AD、 VA)。请求要求有效的 SEPA IBAN 和 beneficiary_type,BIC 可选。GB 不在 V1。该方法仅支持 EUR,并复用 payout_status_changed webhook。

v2.90

变更
  • 银行卡 checkout 的最短有效期:银行卡物化现在接受剩余至少 5 分钟的 checkout 链接。剩余时间不足时返回 422 checkout_expiring_soon,并提示 付款前向商户索取新链接,而不是稍后以通用的银行卡会话校验错误失败。

v2.89

变更
  • 可执行 payout 报价来源:GET /v1/rates 的每个国家现在会在 rate 旁返回 rate_source。lot 表示 payout 侧使用最早开放的 FIFO 批次;spot 表示使用 spot。payin_rate 仍基于 spot,可选的按 金额 lot_quote 保持不变且仍为指示性报价。
v2.88 · 3 个版本

v2.88

新增
  • 组织公告:账户 webhook 订阅现在可以接收新的账户范围事件 admin_announcement,其 payload 为本地化纯文本 {broadcast_id, subject, body}。

v2.87

新增
  • FIFO 汇率来源:payout 响应可以返回 rate_source,而 GET /v1/rates?currency=&amount= 可以返回 lot_quote 指示性报价, 说明使用批次库存、现货还是混合。

v2.86

修复
  • 3DS 认证失败返回 failed_attempt:银行拒绝认证时,会话返回带 failure_code: authentication_failed 的 failed_attempt(之前为通用 500)。托管页面显示友好消息和剩余尝试次数。
v2.85 · 5 个版本

v2.85

变更
  • 托管银行卡失败分类:银行卡支付页面现在会返回稳定的 failure_code 枚举(declined、authentication_failed、provider_unavailable、 invalid_data、card_unavailable、expired、needs_review、 unknown),并为付款人翻译为 EN/ES/ZH。历史 failure_reason 保持兼容;needs_review 的不明确结果不得用新付款重试。

v2.84

新增
  • Payout 和 payin 列表筛选器:payout 列表现在支持 method 和 search;payin 列表现在支持 method、kind、refund_status 和 search。

v2.83

变更
  • 公开状态页遵循通道生命周期:运营方通过管理控制停用的通道不再出现在状态列表或事故历史中,也不再影响整体状态。已启用但处于中断状态的通道仍会显示。
  • 严重 KYC/KYB 信号转入人工审核:自动决策引擎不再因为严重 AML 制裁(包括 KYB 关联方)、禁止司法辖区或明确的文件欺诈/提供方拒绝信号产生 rejected。原始代码仍保存在 auto_decision_reasons;提供方已经关闭的 rejected 决定仍然具有权威性。
  • 自助验证状态详情:GET /v1/me/verification 现在会在 submission 中返回可选字段 pending_documents、changes_requested_comments、documents_received 和 documents_gate。

v2.82

Breaking
  • 认证账户创建 payin 需要已批准的身份:个人账户必须通过 KYC,企业账户必须 通过 KYB,之后才能创建 payin 或使用账户级 collect。POST /v1/payins (QR、card、checkout、bank_transfer 和 fintoc)、collect OTP/collect、 创建专属入金账户、已保存卡扣款和订阅在获批前均返回 403 verification_required。已经存在的公开支付链接、已经收到的被动入账、 org-admin 运营分配以及系统创建的入金工具仍可用。
Changed
  • 账户虚拟 IBAN 申请现在记录可选的证件和公司注册 override (snake_case 与 camelCase)、KYC/KYB 自动补全以及 registrant_incomplete(422)响应。

v2.81

变更
  • 银行卡 payin 入账时间:payin_card 的 settlement_hours 现在接受 0 或 24 的倍数。正数按组织时区的美国工作日计算,并排除联邦假日。 例如 48 表示两个工作日后入账;27 会返回 400 invalid_settlement_hours。已有的 settle_at 值和旧的非 24 倍数 配置继续按日历小时处理。该规则与服务商无关。
v2.80 · 3 个版本

v2.80

新增
  • 已过期 checkout 链接的匹配原因:针对已过期 checkout 链接收到的 payin 会继续以 unassigned 状态显示,并带有 match_reason=checkout_link_expired;支付镜像会关闭,不会持续处于 可重试的错误状态。

v2.79

变更
  • 成员安全事件:账户范围的 webhook 传送会 redact ip 和 user_agent;组织范围的管理员视图保留取证用的 user_agent 以及 actor provenance 字段。
  • Webhook V2 签名文档:webhook 指南现在说明了 X-Webhook-Signature-V2。该签名使用 HMAC-SHA256 签署 timestamp.event_type.event_id.raw_body,并与传统 V1 的 timestamp.raw_body 签名同时发送。V1 仍然有效。

v2.78

变更
  • 扣款前的筛查失败会明确标记:如果收款人筛查在扣款路径完成前失败, payout 可以以 failed 结束,并带有 predebit_failure: true 和 funds_debited: false。响应和 payout_status_changed payload 不包含 receipt_url;这不同于扣款后的失败,后者会退回准确的扣款金额。
  • Payout 状态修订是持久的:同一 payout 在 pending 时仍可发送 compliance_dispatch_pending、compliance_dispatching 和 core_unreachable,并带有 funds_debited: true。保留原幂等键,并按 event ID 去重每次 webhook 投递。
  • 扣款前 payout 的回执可用性是明确的: GET /v1/payouts/{payoutID}/receipt 在技术筛查等待期间或扣款前筛查失败后 返回 409 receipt_not_available;这些状态没有财务回执。
  • 银行卡 payin 的确认现在会正常完成:终态的 payin_charge_status_changed 通知现在会正确关闭关联的银行卡 payin, 已确认的银行卡付款可以继续正常的入账流程。
  • 已公告 payin 到期时可靠发送 payin_expired:到期处理现在可以处理 尚未关联账户的公告,让集成方无需轮询即可关闭未支付的收款。
v2.77 · 3 versions

v2.77

变更
  • Payout 合规转换现在持久化且明确:技术筛查返回 process 后,同一个 payout 仍可在 pending 中使用 compliance_dispatch_pending、 compliance_dispatching 或 core_unreachable,此时 funds_debited: true。筛查通过前该字段保持 false;请保留原幂等键并 等待 payout_status_changed,不要创建第二笔 payout。

v2.76

变更
  • Payout 技术筛查队列:当收款人筛查暂时不可用但队列可用时, POST /v1/payouts 返回 202,资源为 status: pending、 status_code: compliance_pending、compliance_pending: true 与 funds_debited: false。等待期间不会创建 hold、账本分录、core 派发或 receipt_url。相同幂等键 replay 返回同一个 payout。process 继续正常 流程,有效 hold 进入防火墙,rejected 在不扣款的情况下将队列中的 payout 结束为 failed。

v2.75

变更
  • Payout 状态 webhook 现在会在 status 和 status_code 旁边返回可选的 status_message。该值已规范化并清理;没有额外详情时可以为空,且不会暴露 上游服务商身份。
v2.74 · 1 个版本

v2.74

变更
  • Collect 与托管 checkout 的合规暂留现在在付款人扣款前发生。批准只 释放审核;使用相同的幂等上下文重试同一个 collect 请求。不明确的 timeout/5xx 会保持 pending 并等待 webhook 对账,绝不会自动重发。 新增 checkout_not_pending 冲突说明,并记录只有证件的付款人应作为 独立身份 screening(document_value/idNumber,而非 name)。
  • 交易筛查现在区分已识别的 AML 类别与模糊候选结果:已识别的类别在 target=true 或 target=false 时仍可触发行动。当 target=false 且 AML 类别未被识别时,结果不可触发行动,也不会产生错误的暂留或错误响应。 缺少 target 的旧版响应,以及不完整或格式错误的响应,仍然采用 fail-closed 行为。
v2.73 · 1 个版本

v2.73

新增
  • EUR 虚拟 IBAN:账户可以用幂等键申请持久化的 funding_usdt 或 banking_eur vIBAN,支持人工批准、状态查询、日期 列表和 ownership 校验。终态入金现在按用途进入对应资金路径。
  • Returns 和 recalls:returned、recalled 和 reversed 幂等对账。 Funding chargeback/refund 与 Banking EUR reverse entry 均为 append-only; 后续 completion 不会复活已 returned 的 operation。
v2.72 · 1 个版本

v2.72

  • Recovery contract:新增核心幂等状态路由和组织运营对充值账户 歧义 claim 的 reconciliation 路由。Recovery 采用 fail-closed,并使用 deposit_account_not_recoverable、idempotency_conflict 与 recovery lease fence。平台管理员 adoption 是独立的最后恢复操作,不是幂等 replay;要重放已核验的 core fence,请使用 reconciliation。
变更
  • 企业多个 CLABE:企业账户可以创建多个 MX/MXN/bank_transfer 充值目的地。每个目的地仍绑定同一 账户,并按目的地入账。企业创建必须提供幂等 key:新 key 返回 201,完成后重放返回 200 并带 idempotency_hit: true,处理中重放 可能返回 409 idempotency_conflict。个人账户和 legacy 通道仍然 每个通道一个目的地;列表现在支持分页。
账户,并按目的地入账。创建支持幂等:新 key 返回 201,完成后 重放返回 200 并带 idempotency_hit: true,处理中重放可能 返回 409 idempotency_conflict。个人账户和 legacy 通道仍然 每个通道一个目的地;列表现在支持分页。BOB 虚拟收款账户:payin 目录现在记录 BO/BOB/bank_transfer 专属收款账户流程,包括创建/列表、轮询对账、 payin_credited、错误和 provider-agnostic 的 BOB payout 合同。
v2.71 · 3 个版本

v2.71

变更
  • 欺诈与身份报告明确声明征信覆盖:没有征信证据时,报告仍可能以 THIN_FILE 就绪,包括明确的无数据源情况。PDF 现在声明来源新鲜度 (live 或 unavailable)和记录数量。传输、认证、存储、契约无效以及 非空 sources_failed 仍通过现有 recovery/退款路径 fail-closed。

v2.70

新增
  • 最终银行恢复语义:记录 400 idempotency_key_mismatch、不会终结 claim 的提供商 401/403、基于 ProviderID 的所有权验证、无需再次调用提供商的完成重放、稳定恢复锁,以及公共/平台 body key 不转发。
  • 欺诈与身份报告:新增 POST/GET /v1/qscore/fraud/reports、认证 detail/PDF、四个 purpose、幂等计费与失败退款、签名 risk_fraud_score_ready webhook、best-effort 邮件和 /verify/qscore-fraud/{code} 公开验证。
  • Qscore Index:新增 /v1/qscore/index 和 /v1/qscore/index/account 的季度快照、国家/行业筛选以及至少五个主体的匿名桶。

v2.69

新增
  • 您的 idempotency_key 会随 webhook 返回。您使用幂等键创建的资金操作, 其账户 webhook 现在会在负载中以 idempotency_key 字段将其带回——无需额外 GET 即可将通知与您自己的参考号对账。覆盖事件:payout_status_changed、 payin_credited、payin_settlement_scheduled、payin_expired、 payin_refunded、crypto_withdrawal_status_changed 和 wallet_send_status_changed。该字段为可选:当操作未携带键创建时省略, 平台内部键永远不会暴露。transfer_received 不携带该字段。payin 资源在 GET /v1/payins/{id} 中也会返回该字段。参见 webhooks 和 幂等性。
v2.68

v2.68

Breaking
  • 委内瑞拉的拉取式收款(c2p / debito_inmediato)已不再提供。 在 VE/VES 通道上创建拉取式收款现在会返回该通道不受支持,且结账报价 不再列出任何 collect: true 选项。collect 端点仍保留在 API 中,标记为 已弃用(deprecated)。向委内瑞拉的对外付款(pago_movil、 bank_transfer)不受影响 —— 且 pago_movil 仍要求 beneficiary.name (自 v2.66 起不变)。参见 payins 与 checkout。
v2.67 · 2 个版本

v2.67

已修复
  • 以卡支付的收银台和 POS 收款现在遵循银行卡结算延迟。当您的 payin_card 费用配置了大于零的 settlement_hours 时,以银行卡 支付的托管收银台链接或 POS 收款与直接银行卡收款行为完全一致:立即 确认为 credited 并关闭为已支付,但余额到 settle_at 才到账 (在此之前携带 settlement_pending: true,可由机构管理员提前释放)。 此前这些收款计收银行卡费用但却立即入账。通过 QR、加密货币、CBPay 应用或 fintoc 支付的收款仍立即入账。API 和 webhook 的结构均未变化。 详见费用——银行卡收款结算延迟。

v2.66

已变更
  • 委内瑞拉 pago_movil payout 现在要求 beneficiary.name。通道要求受益人的名 + 第一姓氏(与证件一致)—— 单个词会被拒绝。payout 指南和 API 参考示例现在将 name 列为必填字段的第一项。委内瑞拉 bank_transfer 此前已记录 name;此处无变更。
v2.65

v2.65

已修复
  • 委内瑞拉 payout:即使 payout 在创建时已同步变为 failed,通道的失败原因(ERR-XXX)现在也会到达 GET。当 VE 的 pago_movil / bank_transfer payout 在创建时被同步标记为 failed,而通道随后通过 webhook 报告原因时,平台会将其持久化:payout 的 GET 在 status_code / status_message 中显示通道真实的 ERR-XXX 代码(此前由于 payout 已为 failed,webhook 会被丢弃)。这是仅元数据的补充:不会二次退款,也不会改变状态。
v2.64

v2.64

新增
  • 签名证明 —— 使用钱包签名消息(EIP-191 / TIP-191)。 通过对结构化反钓鱼信封(域名、用途、账户、nonce 以及 10 分钟有效期窗口 —— 绝不是自由格式消息)的加密签名来证明对钱包的控制。两种流程:通过 POST /v1/segregated-wallets/{walletID}/signatures 对隔离钱包进行服务端签名(成员会话需要 OTP 验证),以及通过 POST /v1/wallet-links/challenges + POST /v1/wallet-links/verify 以签名挑战绑定外部钱包(MetaMask、TronLink)。指南:签名证明。
  • 证明管理。 GET /v1/signature-proofs(分页,支持 from/to/status/purpose 筛选)、GET /v1/signature-proofs/{proofID} 和 POST /v1/signature-proofs/{proofID}/revoke。已绑定的钱包通过 GET /v1/wallet-links 列出,通过 DELETE /v1/wallet-links/{linkID} 撤销。
  • 公开验证。 每个证明都带有 proof_code 和 verify_url;任何人都可以在 GET /v1/public/signature-proofs/{code} 无需身份验证即可验证 —— 状态、有效期窗口、链、地址以及(已签名时)签名和消息哈希。
  • Webhook wallet_signature_created 和 wallet_linked。 在创建证明和绑定外部钱包时发出。参考:Webhooks。
  • 每次服务端签名都会发送安全邮件。 账户持有人会收到一封品牌化邮件,其中包含每次签名的钱包、链、用途和时间戳。
v2.63

v2.63

修复
  • verifications_unavailable 的提示不再声称已退还费用。 身份验证返回 503 并不意味着退款:验证文档接口从不收费,自助入驻也不收取任何费用。该提示现在仅建议稍后重试。参考:错误 与 KYC 指南。
v2.62

v2.62

变更
  • 当账单国家/地区要求时,托管卡支付页面现在强制填写账单州/省。 对于捕获卡扣款时 ISO 3166-2 行政区为必填的国家(例如美国、加拿大、巴西),现在会向付款人显示必填的州/省字段,选项来自行政区目录;该值作为账单地址的 administrative_area 传输。无强制行政区的国家仍保持该字段可选。指南:银行卡支付。
  • 已保存卡(MIT)扣款在发起前校验账单地址。 保存时已带完整账单地址的卡照常工作。如果已保存的卡没有可用的账单地址,扣款将被拒绝并返回 422 core_rejected,消息会提示付款人通过 save_card: true 重新保存该卡 —— 不会发生资金变动。指南:已保存的卡片与订阅。
修复
  • 因缺少账单州/省而导致”已授权但从未捕获”的卡交易不会再发生。 账单地址会被提前校验 —— 托管页面上对付款人校验,已保存卡扣款在发起前校验 —— 行政区名称会被规范化为通道要求的 ISO 3166-2 代码(例如 “California” → CA)。
v2.61

v2.61

新增
  • 账户 locale en / es / zh。 GET /v1/me 现在返回 locale。PATCH /v1/me 发送 { "locale": "en" | "es" | "zh" } 即可持久化;空字符串存为英语;其他非空值返回 400 invalid_locale("locale must be en, es or zh")。新账户在创建时选择 locale(请求体,然后是 Accept-Language,然后是组织的 default_locale,最后是英语)。指南:语言与 locale。
变更
  • 面向人的界面默认英语。 托管页面(收银台、公开 tracker、收据、状态页、Qscore 印章、核验报告)、收据/对账单 PDF 以及 CSV 表头 解析为 en,除非有效的 ?lang= / ?locale=、账户资料、组织默认值或 Accept-Language 另有指定。无效的 query locale 会被忽略(绝不会 400)。API JSON 与 webhook 仍为英语。
  • 付款人 cookie cbpay_pay_locale(30 天,Secure,SameSite=Lax)用于公开页面;不会翻译 JSON。
  • 既有账户保持西班牙语。 部署时的一次性步骤会为尚无 locale 的账户写入 locale=es,以免现网西语客户被切到英语。新账户仍默认英语。
v2.60

v2.60

变更
  • US ACH、wire 与 SWIFT 立即返回 bank_reference。 创建响应保持 processing,并已带上受益人(以及你)可与银行核对的 CBF 参考号。银行确认后 payout 才会完成 — 请监听 payout_status_changed。其他通道的 bank_reference 仍在渠道报告前为空。
v2.59

v2.59

变更
  • 美元银行通道付款:收款人可居住在任何国家 (付款指南):对于 ach、wire 和 swift 转账,收款人的 country_code 不再固定为 US —— 例如,可以为居住在德国的人 向美国银行账户发起 ACH。对于 ach/wire,接收银行必须在美国 (bank_country: "US" —— 国内通道不向境外银行付款);对于 swift,银行可位于 任何国家。仅当收款人居住在美国时才要求 state。附录 B 司法管辖区 (CU/IR/KP/SY)对收款人和银行所在国家均保持封锁。
  • 每笔美元银行通道转账均要求支持文件:通过 ach、wire 和 swift 发起的美元付款始终要求先通过 POST /v1/payouts/documents 上传支持文件 (发票/收据),无论收款人所在国家 —— 此前该要求取决于国家。缺少文件将返回 400 supporting_document_required。
v2.58 · 3 个版本

v2.58

变更
  • 配置结算延迟的银行卡收款会立即确认为 credited (费用):当 settlement_hours > 0 时,已支付的银行卡收款现在会在付款时变为 status: credited —— payin_credited webhook 立即发出,以卡支付的收银台 链接随即关闭为已支付。等待的只有余额:它在到达 settle_at 时进入您的账本 (结算 worker 每分钟运行一次),或由机构管理员提前手动释放。此前收款会保持 pending,且 payin_credited 仅在结算时才发出。
  • 收款新增字段:余额排期期间,create/GET/列表响应携带 settle_at(RFC 3339)和 settlement_pending: true;余额到账后则携带 settled_at。
  • payin_settlement_scheduled 负载:该 webhook 现在报告 status: "credited"(原为 pending),与即时确认保持一致。
新增
  • 新错误 settlement_pending(422):对余额仍在结算排期中的银行卡收款 发起退款将被拒绝,直到资金释放(到达 settle_at,或由机构管理员提前释放)。 详见退款。

v2.57

新增
  • 新 webhook 事件 payin_settlement_scheduled:当您的组织为银行卡 payin 配置了延迟结算(settlement_hours > 0)时,已支付的银行卡 payin 会保持 pending 状态,并带有未来的 settle_at,直到结算 worker 释放资金。 从现在起,付款确认的那一刻您将收到恰好一次的 payin_settlement_scheduled(幂等——重试不会重复发送),其中包含完整报价: usdt_gross、fee、usdt_net(到期时将入账的金额)、settle_at 和 receipt_url。此前唯一的信号只是 payin 处于 pending 而没有任何确认。 到期时,worker 会入账余额并照常发送 payin_credited。订阅方式与任何账户事件相同: event_type: "payin_settlement_scheduled"。

v2.56

变更
  • 银行余额新增中性摘要字段:GET /v1/banking/accounts/{bankAccountID}/balance 和 GET /v1/banking/third-parties/{thirdPartyID}/accounts/{bankAccountID}/balance 现在在(不变的)balance 对象之外返回三个可选的顶层字段:available 和 held 为平面小数字符串(如 "1250.00"、"0.00"),currency 为 ISO 4217 货币代码(如 "USD")。这是读取金额的推荐方式——此前金额仅嵌套在通道原生的 balance 对象内,其结构因通道而异。balance 对象保留完整的账户详情(显示名称、收款要素)。
v2.55 · 6 个版本

v2.55

新增
  • 可配置的银行卡收款结算延迟 (费用):payin_card 服务的费用配置现在接受 settlement_hours 字段(整数 ≥ 0,默认 0 = 立即入账,与之前完全一致)。配置延迟后,已批准的银行卡扣款会使收款保持 pending 状态,并在创建、详情和列表响应中返回新的 settle_at 时间戳(RFC 3339)——余额入账、payin_credited webhook、 收银台链接关闭和自动兑换全部在 settle_at 时发生(worker 每分钟结算一次到期的收款)。在批准或分配时已超过期限的收款会立即入账。对任何其他服务发送 settlement_hours(或负数)将返回 400 invalid_settlement_hours。
  • 按通道计收的银行费用 (费用):新增五个交易型费用服务 —— banking_deposit、banking_transfer_ach、 banking_transfer_swift、banking_transfer_wire 和 banking_transfer_sepa —— 按百分比 + 固定费用计收,以操作货币 (BANK_USD / BANK_EUR)收取。存款在入账时收取 (以存款金额为上限,小额存款不会出现负数);转出转账在发起时收取, 并强制执行 余额 >= 金额 + 手续费 的校验,若转账被最终拒付则退还手续费。未配置特定通道时回退到旧的 banking_operation 服务;通道配置为 0% + 0 固定费用表示明确免费, 不会回退。

v2.54

变更
  • 日期筛选器现在使用贵组织的时区:平台所有列表(payouts、payins、 加密货币提现、银行转账、费用、对账单、分析、收入)的 from/to 日期筛选器(YYYY-MM-DD)现在按贵组织的时区解释日期,而不再使用 UTC。from 为该日期在您时区的午夜(含),to 为次日午夜(不含)。 时区是组织级设置(timezone,IANA 名称),由平台管理——默认为 America/New_York——当前值通过 GET /v1/branding 以 timezone 字段暴露。分析与收入的每日分桶也按贵组织的民用日聚合。请求格式 未变:仅 YYYY-MM-DD 筛选器所覆盖的日历日发生变化。

v2.53

新增
  • Qscore 可验证公开印章(印章指南): 等级为 A 或 B 且评估新鲜(不超过 90 天)的企业账户可以激活公开可验证印章 —— POST /v1/qscore/my-seal(设计上幂等:重放返回 200 及当前印章), 通过 GET /v1/qscore/my-seal 查询,随后分享公开页面或嵌入实时 SVG 徽章 (badge_url)。页面和徽章在每次访问时实时重新评估资格:若分数降至 B 级以下或评估超过 90 天,印章将切换为”已失效”——绝不透露原因或数字分数 (反预言机)。持有人可随时通过 DELETE /v1/qscore/my-seal 撤销;撤销对该印章 永久生效,并可立即激活新印章。新增公开端点:GET /platform/verify/qscore/seal/{code}(JSON,或面向浏览器的品牌化 HTML 页面)和 GET /platform/verify/qscore/seal/{code}/badge.svg(可嵌入实时 徽章)。新增错误码:seal_companies_only、seal_not_eligible 和 no_active_seal。无新增 webhook。

v2.52

新增
  • Qscore 授权链接(持有人授权)(授权链接指南): 通过可分享的链接请求主体授权读取其银行数据 —— POST /v1/qscore/consents (幂等,可选择以您的品牌将链接发送至持有人邮箱),随后通过 GET /v1/qscore/consents 和 GET /v1/qscore/consents/{id} 跟踪状态, 或通过 POST /v1/qscore/consents/{id}/revoke 撤销。持有人在公开页面 (无需登录)上作出决定:通过安全组件连接其银行,银行核实的持有人身份 必须与主体的证件完全一致(他人证件下的账户永远无法授予授权)。授权后, CBPay 会将正面银行事实(账户、余额、90 天收支活动)派生至主体的信用档案 —— Qscore 报告在每次生成时都会重新派生这些数据以保持新鲜。新增 webhook: risk_consent_granted 和 risk_consent_revoked。新增错误码: purpose_required、invalid_purpose、invalid_doc_id、 invalid_subject_type、invalid_email、already_decided、 link_inactive 和 holder_mismatch。

v2.51

新增
  • Qscore 批量评分(组合评分)(批量评分指南): 通过 POST /v1/qscore/batches 上传一批主体 —— JSON 数组或 CSV 字符串, 每批最多 5,000 个 —— 平台将异步为每个主体出具一份完整的 Qscore 报告。 行在创建时即完成校验(无效证件号、不支持的 subject_type 以及批内重复项 会在 rejected_items 中报告且不予处理);每个条目在处理时收取相应的 独立报告费用,若发生终态失败则自动退款。批次完成后,您将收到一个 risk_batch_completed webhook 和一封包含计数器的邮件 —— 单个报告不再 单独发送 webhook 或邮件。通过 GET /v1/qscore/batches/{batchID}/items 读取逐条结果,或通过 GET /v1/qscore/batches/{batchID}/results.csv 下载。新增错误码:no_valid_items 和 too_many_items。

v2.50

新增
  • Qscore 企业报告现在可能包含 peer_benchmark 块:评分在其行业细分中的相对位置(相同国家、相同 ISIC 行业)。报告包含行业代码与名称(segment_code/segment_label)、可比企业数量(peers)、percentile(评分更低的同业占比)以及该细分的 median_score(评分中位数)。该块仅在至少有 5 家可比企业时发布,且仅适用于企业报告。
v2.49 · 9 个版本

v2.49

新增
  • Qscore —— 您自己的信用报告,免费(Qscore 指南):已验证账户的 持有人现在可以获取其本人的 Qscore 信用报告 —— 即 ARCO / 数据保护访问权 —— 通过 POST /v1/qscore/my-report(可选 {"lang":"es"|"en"|"zh"})生成, 通过 GET /v1/qscore/my-report 读取最新报告,并通过 GET /v1/qscore/my-report/pdf 下载品牌化 PDF。与购买的报告不同,自助报告 免费(不收取费用),主体身份来自账户已验证的 tax_id(请求从不接受 doc_id —— 通过这些端点获取第三方报告在设计上是不可能的),每 30 天可生成 一份新报告(在该时间窗口内将返回现有报告并带 idempotency_hit: true), 且自助报告不计入主体的查询次数,因此查看您自己的报告绝不会影响您的评分。 自助报告的 risk_report_ready webhook 会携带 purpose: "self_access"。 商业端点 POST /v1/qscore/reports 现在会拒绝 purpose: "self_access", 返回 400 invalid_purpose。新增错误码:kyc_required、no_tax_id、 invalid_tax_id(错误)。

v2.48

变更
  • 银行与开卡申请现在可被挂起审核(银行指南、开卡指南、交易审核):如果您所在的组织启用了申请审核,POST /v1/banking/customer、POST /v1/banking/third-parties 和 POST /v1/cards 可能会返回 202 Accepted({"status":"in_review","kind":"...","review_id":"..."}),而不是立即创建资源——在合规团队批准审核之前,不会发送任何内容进行处理。开户/发卡费用在申请被挂起时收取,若被拒绝将自动退还。使用相同 idempotency_key 的重试会返回同一审核(idempotency_hit: true),绝不会重复收费。通过 txn_review_status_changed webhook 或在交易审核(类型 banking_application / card_application)中跟踪结果。

v2.47

新增
  • Qscore —— 主体持续监控(Qscore 指南):当你已持有某主体的 ready 报告后,可通过 PUT /v1/qscore/subjects/{docID}/monitoring 订阅监控, 平台每约 5 分钟重新评估该主体,当评分跌破你的 monitor_since_score 阈值 (score_drop_below)、征信出现新记录(new_records)或记录被移除 (records_removed)时,发出新的 webhook risk_monitoring_alert —— 设置 only_material: true 后仅触发重大变更。可通过 GET /v1/qscore/subjects/{docID}/monitoring、GET /v1/qscore/monitoring (账户下所有被监控主体)和 DELETE /v1/qscore/subjects/{docID}/monitoring (停用,active: false —— 历史记录永不删除)管理订阅。监控免费,但需要先购买 该主体的报告:否则 API 返回 403 report_required,与主体不存在时的响应相同 (有意设计,防止探测主体是否存在)。新增错误码:report_required(错误)。

v2.46

新增
  • 付款的银行参考号现已覆盖所有界面(付款指南):每笔付款都会展示 bank_reference —— 收款银行/通道分配的交易号 —— 包括 POST /v1/payouts、 GET /v1/payouts 和 GET /v1/payouts/{payoutID} 的响应、 payout_status_changed webhook 负载、PDF 回执、付款 CSV 导出以及对账单 (JSON 和 Excel)。付款处理中该字段为空(""),付款完成后即为收款人 可用来与银行核对付款的参考号。

v2.45

新增
  • Qscore — API 优先的信用局(Qscore 指南):购买个人 和企业的信用报告(POST /v1/qscore/reports),首先在智利上线。每份报告将 负面记录、劳动和社保背景、未缴票据及官方公报发布汇总为 0–1000 的评分, 等级为 A–E(无数据时为 SC),并附原因代码、品牌化 PDF 和公开验证码。 GET /v1/qscore/subjects/{docID}/score 读取你已出具报告主体的当前评分, GET /v1/qscore/reports/{reportID}/pdf 下载 PDF,数据主体更正(ARCO)流程通过 POST /v1/qscore/subjects/{docID}/disputes + GET /v1/qscore/disputes/{disputeID} 运行。报告按证件类型计费 (risk_report_person / risk_report_company),并依法要求声明 purpose。新增 webhook: risk_report_ready 和 risk_score_changed。需要 risk 服务标志。
  • 报告公开验证:GET /v1/verify/qscore/{code} 验证印在 Qscore 报告上的 验证码,返回非敏感事实(主体类别、等级、签发日期)— 不含 PII。
  • 新增错误码:purpose_required、invalid_purpose、invalid_doc_id、invalid_subject_type、 no_score、pdf_not_ready(错误)。

v2.44

修复
  • payin_received 事件不再针对运营方资金库账户的内部银行冲正生成 (自身出金交易的冲正从来都不是客户付款)。

v2.43

变更
  • 城市目录质量改进(AML 目录指南): GET /v1/aml/catalogs/cities?country=<CC> 返回的城市数据已重新生成, 覆盖更完整、拼写更准确。名称保留本地拼写(重音符号、ñ、ü —— 如 “Alhué”、“Coyoacán”、“São Paulo”),本地名称取代英文外来名(如 “Ciudad de México” 而非 “Mexico City”),城市辖区覆盖完整 —— 圣地亚哥所有 comuna、利马各区、墨西哥城各 alcaldía 以及整个地区的 市镇。同时清理了源数据噪音(美国普查后缀如 “Abanda CDP”、残留的 行政前缀、重复拼写)。响应结构与错误码不变 —— 无需调整集成。

v2.42

新增
  • 通过 API 获取跟踪链接(跟踪指南):新增的认证端点 GET /v1/track-link?kind=<kind>&id=<id> 返回你读取范围内任意交易的可分享公开跟踪链接 —— { "track_url", "code" } —— 无需下载回单 PDF。这是你 UI 中”分享链接”按钮的基础组件。 code 与每张回单上打印的 HMAC 确定性代码相同,因此同一交易的链接始终不变。账户本身、 组织管理员和平台管理员均可使用;范围之外的交易统一返回 404 not_found。

v2.41

新增
  • 每笔交易的公开跟踪链接(跟踪指南):每张回单(payout、payin、 退款、内部转账、兑换、加密货币提现或充值、银行操作、刷卡消费)现在都带有一个可分享的 公开链接——https://business.cbpayapp.com/t/{code},与回单上打印的签名代码相同——打开 Wise 风格的跟踪页面,展示实时时间线、回单 PDF 下载和语言选择(EN/ES/ZH)。页面为 noindex,永不缓存,并将审核类状态显示为 processing(防提示)。
  • 公开跟踪接口:GET /v1/public/track/{code}?lang= 返回交易的公开 JSON 状态, GET /v1/public/track/{code}/receipt.pdf?lang= 即时重新生成回单 PDF。两者均无需鉴权、 按 IP 限流,并对无效或被篡改的代码返回统一的 404 not_found。
  • 中文回单:回单 PDF 和跟踪页面现已完整支持 lang=zh。
变更
  • 回单 verify_url 打开跟踪页面:新回单及回单邮件中的 verify_url 现在指向跟踪页面。 旧的 GET /v1/verify/receipts/{code} 继续保留——浏览器会被重定向(302)到跟踪页面, 而 API 客户端仍收到与之前相同的 JSON 结果。
v2.40 · 4 个版本

v2.40

新增
  • 银行目录查询(付款指南):新增的 GET /v1/payouts/bank-directory/lookup 可从嵌入式公开银行目录自动补全收款银行——routing_number (9 位数字,仅限美国)与 swift(8 或 11 个字符;XXX 后缀会归一化为总行)二者必传其一, 它会解析出银行名称、城市、州和地址块,便于 payout 和交易对手表单在付款人输入时预填 bank_name 和选填的 bank_* 字段。返回 404 bank_not_found 仅表示该代码不在目录中: 表单保持手动填写即可。静态数据,带 Cache-Control: public, max-age=86400。
  • 邮政编码查询(AML 指南):新增的 GET /v1/aml/catalogs/postal-code?country=US&code=33130 可将美国 ZIP 编码解析为其 city 和 state,便于地址表单在用户输入 ZIP 时自动填充这两个字段。目前仅美国有数据集; 返回 404 postal_code_not_found 表示该 ZIP 未知(或该国家/地区没有数据集),字段保持手动填写。
修复
  • 城市目录质量清理:GET /v1/aml/catalogs/cities 现在按折叠形式(去除变音符号、不区分大小写) 对城市去重,统一夏威夷 ʻokina 字符,删除两条损坏粘连的条目,折叠内部多余空格,并以 Content-Type: application/json; charset=utf-8 提供响应。

v2.39

新增
  • 按国家查询城市目录(AML 指南):新增的 GET /v1/aml/catalogs/cities?country=US 返回某个 ISO 3166-1 alpha-2 国家的城市,按行政区划分组——states 的键与主目录中 country_subdivisions 的 ISO 3166-2 代码一致,country_cities 列出无法映射到行政区的城市(两个字段都不会为 null)。无覆盖的 国家返回 200 和空列表(前端回退为自由文本输入);格式错误的 国家代码返回 400 invalid_country,未知代码返回 404 country_not_found。静态数据,带 Cache-Control: public, max-age=86400——每个国家调用一次,然后 在客户端按州/省筛选。
  • US/USD 充值现在发布两条存款通道(充值指南): 公告式 bank_transfer 走廊同时提供美国国内电汇指令(ABA routing_number)和国际 SWIFT 指令(BIC + 代理行)——公告、 充值读取以及 GET /v1/payins/deposit-instructions 预览都会暴露 deposit_instructions(国内)和 deposit_instructions_swift (国际),各自带有可复制的 QR,付款方选择其银行支持的通道。两个 指令块在配置后都会携带新的 holder_address 和 notes 字段(QR 中以 “Holder address” 和 “Note” 行打印)。失败关闭:缺少 SWIFT 变体的 US/USD 走廊在公告时返回 422 deposit_instructions_unavailable。

v2.38

新增
  • 按审核期限自动拒绝(交易审核指南)— 如果您的组织为交易防火墙配置了审核期限,在该期限内(自最后一次状态 变更起算——上传证据会重置计时)无人决定的审核将由每小时一次的扫描 自动拒绝:操作被取消,被扣留的资金退回您的余额,您会收到与人工 拒绝相同的邮件和 txn_review_status_changed webhook (status: "rejected")。审核详情的 decision_note 携带标准的期限 提示。

v2.37

新增
  • 新增 payin 走廊:美国(USD)预报银行转账(ACH / wire)。账户通过 POST /v1/payins 预报存款,请求体为 {method: "bank_transfer", country: "US", currency: "USD", amount, idempotency_key, payer_name?},响应返回唯一 参考号 CB…、status: "pending" 以及完整的 deposit_instructions 区块 ——该区块现在支持美国银行字段 routing_number(ABA)、swift(BIC)、 bank_address、intermediary_bank_name 和 intermediary_bank_swift。 客户从其银行转账时在附言/memo 中填写 CB… 参考号;款项到达归集账户后按 参考号匹配并以 USDT 入账(status: "credited",含 usdt_credited 和 fx_rate)。没有预报或参考号的银行入账将保持 unassigned——失败关闭, 绝不会自动入账。无需预报即可预览收款账户: GET /v1/payins/deposit-instructions?country=US&currency=USD&method= bank_transfer。美国加入了强制要求组织配置存款指令的走廊名单:未配置即预报 会返回 422 deposit_instructions_unavailable。美国标签页(含完整 请求/响应示例、状态表、错误和 FAQ)见 Payins 指南; deposit_instructions 区块和预览端点已在 API 参考中更新。
v2.36 · 3 个版本

v2.36

新增
  • 交易防火墙:当您的组织启用交易防火墙时,资金操作(法币 payout、加密 提现、payin 和银行转账)可能会被扣留为 in_review 状态,等待人工决定 — API 返回 202 Accepted 和 review_id。新增账户端点 GET /v1/me/txn-reviews(列表和详情)、 POST /v1/me/txn-reviews/{reviewID}/files(上传所需文件)和 GET .../files/{fileID}/download(下载您自己的文件),以及新的 txn_review_status_changed webhook(中性 payload — 内部原因从不外传)。 新指南:交易审核。

v2.35

新增
  • 新增出金通道:美国(USD),提供三种方式 —— ach(次日 ACH 至支票或储蓄账户)、wire(境内电汇)和 swift(经 SWIFT 的 国际美元电汇)。通道要求每笔转账附带收款人完整的身份与邮政 地址(name、email、account_number、country_code、 address、city、postal_code、bank_name 和 bank_code —— ach/wire 用 ABA routing number,swift 用 SWIFT BIC; ach 还需 account_type CHECKING/SAVING),收款银行的 地址块与 bank_phone 为建议选填项。wire 和 swift 最低 USD 25.00。向全新收款人发起的第一笔 payout 可能保持 processing 且 status_code: "pending_aml",待通道审核收款人后 自动执行;若通道拒绝,payout 以 failed、 status_code: "counterparty_rejected" 结束并自动退款。可按笔在 options 中覆盖通道的付款用途声明(purpose、 crypto_activity、payment_gateway)。通道表、按方式的字段表、 真实示例与 FAQ 见 出金;API 参考中新增 命名请求示例 us_ach、us_wire 和 us_swift。

v2.34

新增
  • MCP 服务器页面现在提及面向组织管理文档的专用 MCP 服务器(mcp-admin.cbpayapp.com,部署中),以便组织管理员了解 org-admin API 也有对应的助手内容源——本公开服务器继续覆盖账户级 API。
v2.33 · 2 个版本

v2.33

新增
  • 文档验证更透明:submission 的文档列表 (GET /v1/{kyc,kyb}/submissions/{id}/documents)现在为每项验证暴露其 id、effective_outcome(当前生效的判定,可能来自运营方的人工复核) 以及 manual_review 块(当验证经过人工复核时包含 outcome 和 reviewed_at)。submission 详情还新增 documents_gate,汇总验证状态 (ok、matched、total 以及仍未解决的类别)。流程不变:均为新增的 只读字段。

v2.32

新增
  • KYC/KYB 自动决策:验证 submission 现在先由自动引擎决定,再进入人工审核。100% 干净 的档案(文件已验证、活体检测通过、无制裁或 PEP 命中、低风险地区)会在几分钟内获批, 无需人工排队。灰色地带(同名的 AML 匹配、PEP 信号、文件部分读取、中等风险、高风险国家) 一律交给人工审核员,而明显无效的档案(已确认的严重制裁、伪造或过期文件)会被自动 拒绝。最终决定现在在 kyc_verification_status_changed 和 kyb_verification_status_changed webhook 中携带 decision_source(auto 或 admin),让你知道每份档案是如何决定的。 详见 KYC 和 KYB。
  • 测试环境新增 HOLDREVIEW 魔法值:主体姓名包含 HOLDREVIEW 的 KYC/KYB submission 会保留 在人工审核中,而不会被自动决定,方便你端到端地演练人工队列。配套的 MANUALREVIEW 魔法值让所有信号保持干净,但绝不会自行了结 submission, 从而确定性地测试判定引擎的自动通过/拒绝路径。参见 测试环境。
v2.31 · 4 个版本

v2.31

新增
  • 银行操作增强字段:GET /v1/banking/operations 和 GET /v1/banking/operations/{id} 现在在银行报告这些字段时暴露可选的 direction(in / out)、净额 amount、currency、counterparty 和 reference——包括在操作列表中自动发现的入账存款和银行费用。 banking_operation_status_changed Webhook 按设计保持不变 (轻量 + 查询详情)。详见银行业务。

v2.30

变更
  • 全 API 错误消息已脱敏。 错误的 message 绝不会暴露提供商名称、基础设施细节、URL、上游原始响应体(JSON/HTML)或内部配置——无论是 API 响应、webhook 还是持久化的状态字段都不会。处理方的业务性拒绝会保留可操作的失败原因(例如某份文件或账户为何被拒绝);基础设施故障会被替换为固定的通用消息 "the payment provider could not process the request" —— 请使用相同的 idempotency_key 重试这些操作。无结构变化:仅消息内容发生变化。

v2.29

新增
  • 按笔消费手续费:卡交易现在可以携带按账户配置的交易手续费(百分比 + 固定),通过两个新服务实现 —— card_purchase_virtual 和 card_purchase_physical。手续费在授权时预估(计入余额冻结),在结算时按当时生效的配置重新计算,并在部分或全部撤销/调整时按比例退还。卡交易现在暴露 fee_asset、fee_amount 和 fee_refunded_amount(未配置手续费时省略 —— 未配置的账户不受影响),购买凭证显示手续费行,账本以 card_fee / card_fee_refund 记录相关流水。详见卡片。

v2.28

新增
  • 支付页面上经付款人验证的已保存卡片:每个银行卡支付页面(card payin 的 payment_url 以及通用 checkout 的银行卡选项)现在把付款人 邮箱作为第一个字段;如果该邮箱在您这里保存过卡片,会先向其发送 验证码,验证通过后才展示卡片 —— 卡片列表绝不在未验证的情况下 显示。勾选**“记住此设备”**(默认勾选)后,付款人在该浏览器中 30 天内无需再次输入验证码。选择卡片后通过 3-D Secure 支付,无需重新 输入卡号。详见 已保存卡片。
变更
  • 通用 checkout 不再询问付款人邮箱:银行卡选项直接物化并重定向到 支付页面,已保存卡片的发现流程就在该页面进行。公开端点 GET /pay/{token}/saved-cards 已被移除(返回 404)—— 卡片列表 不再从任何未经验证的接口流出。契约不变:POST /v1/payins (card 和 checkout)保持不变,server-to-server 的 stored_card_id 无需验证码(您已认识您的客户)。
v2.27 · 2 个版本

v2.27

新增
  • 停用和重新启用 webhook 订阅:新增 PATCH /v1/webhooks/subscriptions/{subscriptionID},请求体为 { "status": "active" | "disabled" } —— disabled 状态的订阅停止接收 新事件,但不会被删除(已排队的投递仍会发出),您可以随时重新启用。 幂等:重复当前状态返回 200 且无变化。详见 webhooks 指南。

v2.26

修复
  • 账户验证状态免受旧尝试的迟到事件影响:当账户重试身份验证(例如 在被拒绝后)时,来自先前尝试的迟到状态事件不会再更改账户的验证 状态或触发决定邮件——只有最近一次尝试才能决定。每次尝试的完整 历史仍保留在管理面板中。
v2.25 · 3 个版本

v2.25

变更
  • 补充管理端错误码文档:在错误目录中新增了 global_treasury_access_disabled 和 invalid_value 错误码。这两个错误码 来自组织管理界面(CBPay Admin 面板),并非账户级 API —— 详见新增的 “组织管理面板”一节。

v2.24

新增
  • 转账通知类 payin 的入金说明(payins 指南): 在支持的走廊中,使用 method: "bank_transfer" 创建 payin 现在会返回 deposit_instructions 区块,包含确切的收款账户信息——bank_name、 account_number、account_type、holder_name、holder_tax_id、 holder_email、reference_required,一段可直接复制的多行文本 qr_payload(含账户、收款人和你的备注/金额),以及带品牌的 qr_png_base64。该区块在 payin 的详情与列表接口中同样返回。新增 GET /v1/payins/deposit-instructions?country=&currency=&method=, 可在创建 payin 之前预览收款账户。银行 QR 为“扫码复制”而非自动填充的 原因,详见指南中的常见问题。

v2.23

新增
  • KYC/KYB 验证决定自动邮件通知(自助入驻):当您的验证结果变为已批准、 已拒绝或需要补充材料时,您会收到一封带有所属机构品牌样式的邮件通知结果。 不适用于第三方验证(例如您的企业在验证某个客户或供应商)——该场景下依旧 使用您已接入的 kyc_status_changed/kyb_status_changed webhook。出于 安全和隐私考虑,邮件不包含拒绝的具体合规原因。
v2.22 · 1 个版本

v2.22

变更
  • 活体检测现支持同一主体多个会话 (身份验证):验证报告的 liveness[] 数组可为同一人携带多条 记录——开通门槛检测 gate 加上一次或多次后续证据补录 media_recapture。每个会话现在都带有各自的 session_id 与 purpose (gate 或 media_recapture)。在 KYB 中,parties[].liveness(单数) 出于兼容性保留,始终指向该关联方的 gate 会话,而新增的 parties[].liveness_sessions[] 携带该关联方的全部会话。媒体元数据依旧不含 URL(has_selfie、has_video、frame_gestures、哈希)——该部分契约不变。
v2.21 · 1 个版本

v2.21

变更
  • 验证报告封面可导航 (身份验证):PDF 首页为可点击的索引卡片(图标、标题与 页码),点击即可跳转到对应章节。每个章节都带有图标与强调条,与 AML 报告保持 一致的视觉语言。
  • 可点击链接:AML 附录中的负面媒体条目带有“查看来源”标签,结尾处的公开 验证链接也可点击。出于安全考虑,仅嵌入 http 与 https 链接,其他协议 一律丢弃,文本保持不可点击。
  • 照片保持真实比例:证件照片与活体检测照片不再被拉伸,说明文字位于下方。
  • 无空白页、无孤立标题:每个章节标题都会预留其首个内容块的高度,因此绝不会 单独出现在页面底部。
  • 负面媒体的汇总状态现显示为 “Review”(原为 “In review”)。
v2.20 · 2 个版本

v2.20

新增
  • 验证报告中的视觉证据(身份验证):当提供商发布活体 媒体(自拍 / 手势帧)或身份证件照片时,PDF 会尽力嵌入照片。若无媒体 或链接已过期,则省略照片区块。报告 JSON 仅声明元数据(has_selfie、 手势、has_video、哈希)— 绝不包含已签名 URL。
  • PDF 结尾的完整 AML 附录:存在筛查时,报告复用独立 AML 报告的同一 结尾(归属声明、覆盖统计、数据源区块与法律声明)。无筛查时保留通用 免责声明。

v2.19

新增
  • 完整的验证报告,不丢弃任何数据(身份验证):KYC/KYB 报告由摘要升级为完整档案。在原有内容之外,JSON 与 PDF 现在还包含 申报的经济画像(资金来源、关系目的、预期交易量与收入、预期链), 风险声明(货币服务、第三方资金、高风险活动、禁止国家), 在源头即已脱敏的银行账户(完整账号绝不进入报告),扩展的企业身份 (成立信息、司法管辖区、ISIC 行业、网站、经营国家、注册地址),以及 档案的其余部分:任何无法归入结构化章节的已验证字段仍会出现在字段块中。
  • 关联方及其自有 AML 筛查(KYB):档案中的每一位 UBO、控制人和签署人 都会作为 parties[] 条目输出,包含其身份、持股比例、归属于它的文件与 活体证明,以及其自有的 AML 筛查并已启用持续监控。不收费:这属于尽职 调查,而非计费产品。(source, index) 组合是该关联方的稳定标识,因此无论 你下载多少次报告,其筛查始终一致。若下载时某一关联方尚无筛查结果,报告会 返回 "partial": ["party_aml_unavailable"],缺失的筛查将在后台执行。
  • 逐条匹配明细的 AML 筛查:完整报告(第三方与管理端读取)的 AML 章节 现在包含指标、别名、带来源与有效期的制裁名单、PEP 职位、RCA 关联及负面 媒体 —— 与 AML 报告同等的明细程度。在你自身入驻的报告中,该章节仍为 聚合形式(clear / under_review,不含匹配明细),你的关联方筛查 同样如此。
  • 文件明细中的文件校验信息:报告中的每个文件都会输出 validated_at, 在适用时还包含拒绝原因,与类别、文件名、状态、结论和分值一并呈现。
v2.18 · 3 个版本

v2.18

修复
  • 金额始终为普通十进制(收款):收款的 local_amount 字段(以及收款事件中的 amount)始终以十进制文本返回 —— 例如 "5000000" —— 绝不会使用科学计数法。在无小数位货币(CLP、PYG、COP) 的大额入款中,一笔入款可能被记录为 "5e+06":金额对你的集成不可读,且该 入款无法与其预告的转账完成匹配,因而始终未入账。本次修复同样覆盖历史记录: 通过 API 读取时会返回规范化后的金额,且不改动任何账务数据。

v2.17

新增
  • 可下载的 KYC/KYB 验证报告(身份验证):每个 KYC/KYB 提交现在都有由平台生成的验证报告,支持 ?format=pdf|json 与 ?lang=en|es|zh。第三方:GET /v1/kyc/submissions/{submissionID}/verification-report 与 GET /v1/kyb/submissions/{submissionID}/verification-report(企业账户, 完整报告:已验证身份、生命周期、文件 + OCR、活体检测及含匹配明细的 AML 筛查)。自身入驻:GET /v1/me/verification/report(结构相同, AML 部分为汇总视图)。免费 — 读取的是已付费的验证结果。
  • 报告公开验证码:PDF 打印 HMAC 验证码 + 二维码,任何人都可在 GET /verify/reports/{code} 验证文件真伪(JSON 或 HTML 页面,不含 个人数据:仅类型、当前决定状态、签发日期与签发组织)。
  • 新错误码:invalid_format(400,format 非 pdf/json)与 verification_not_found(404,账户尚未提交任何验证); invalid_language 同样适用于该报告。

v2.16

修复
  • QR 收款现在始终自动入账(payins):已支付的 QR 可能停留在 pending,而资金以未指派存款的形式到账——因为银行转账不携带 收款的参考号,且按金额对账仅保留给预告转账。现在,结清收款(QR、checkout 链接或银行卡)的存款会携带与已支付收款单的关联,并一对一路由到其 payin——不使用启发式匹配。入账的 payin 以 match_method: charge_link 声明该关联,这是所有对账信号中最强的一种。
  • match_method 枚举文档化:参考文档曾列出 single_candidate 与 dedicated_instrument,但 API 中并不存在。真实值为 amount_single_candidate 与 dedicated_clabe;spec 中新增了 charge_link 与 manual_assign(管理员手工路由存款)。
v2.15 · 1 个版本

v2.15

修复
  • 预告转账现已遵循幂等性(payins): POST /v1/payins 在 method: "bank_transfer" 下接受 idempotency_key 却将其忽略,因此重试(超时、重复点击)会创建第二个预告。两个金额相同的 活跃预告正是匹配逻辑拒绝解析的情况,因此真实到账会变为 unassigned。现在,使用相同密钥(请求体字段或 Idempotency-Key 请求头)重试会返回原始预告(相同 reference,HTTP 200 且包含 idempotency_hit: true)。不带密钥的 POST 会复用完全相同的活跃预告 (同一账户、币种、金额和付款人),而不是重复创建。若要向同一付款人 收取两笔金额相同的真实款项,请为每个预告发送不同的密钥。 复用已用于其他收款方式(QR、checkout、卡支付)的密钥, 现在会返回 409 idempotency_conflict,而不是返回与请求不符的对象。
v2.14 · 6 个版本

v2.14

新增
  • 预告转账的付款人识别(充值): POST /v1/payins 使用 method: "bank_transfer" 时可选传入 payer_name、payer_document 与 payer_account。如果你不传 payer_document 且该账户是已验证的个人,系统默认使用持有人的证件号, 这样即使转账没有附言参考号,也能通过银行报告的付款人完成匹配。 响应中的 payer_source(declared、account_identity 或 none) 会说明最终使用的是哪种身份。
  • 充值上的匹配审计:GET /v1/payins/{id} 会返回 match_method (reference、payer_document、payer_account、payer_name、 single_candidate 等)以及通道报告的 payer 区块,让你清楚看到这笔 充值为什么进入了该账户。
变更
  • 预告转账不再按金额匹配”最早的一笔”:如果两条或以上待处理预告的 金额与币种相同,且没有任何信息可识别付款人,该充值会保持 unassigned,而不是错误入账到其他账户(fail-closed)。仅当只有 一个候选时,纯金额匹配才继续生效。详见新增章节 预告转账的匹配规则。

v2.13

新增
  • 事件流握手配额(错误):连续过于频繁地打开 GET /v1/events 现在会返回 429 rate_limited。它与 too_many_streams 是两个不同的限制:rate_limited 按 IP 统计连接尝试次数(每小时 600 次, 足够用于重连),而 too_many_streams 限制同时保持打开的流数量 (每个账户 5 个)。两者的重试方式相同:等待后带上 Last-Event-ID 重连, 不会丢失任何事件。

v2.12

新增
  • 实时事件流(指南): GET /v1/events 打开 Server-Sent Events 连接,推送你账户中发生的一切 —— 与 webhook 相同的事件,无需轮询即可送达浏览器。使用 Last-Event-ID 请求头 重连,服务端会重放你错过的事件;用 ?types= 过滤;用 ?snapshot=true 获取当前绝对状态。
  • 可查询的事件历史:GET /v1/events/history(支持 from/to、分页与 类型过滤)与 GET /v1/events/{eventID} 读取与事件流同源的日志,保留 90 天。
  • 三个新事件(webhooks):balance_adjusted(管理员为你 的余额入账或出账)、account_status_changed(账户被暂停或恢复)与 member_security_event(登录、密码或 2FA 变更、会话撤销)。它们同时通过 webhook 和事件流送达。
  • 新增错误码(错误):too_many_streams、 stream_unavailable 与 streaming_unsupported。

v2.11

新增
  • 卡收款退款(指南):POST /v1/payins/{payinID}/refunds 可对卡收款进行全额或部分退款,并立即从你的余额中扣除相应金额。退款必须携带幂等键 (使用相同幂等键重试永远不会重复退款),使用会话发起时还需要 OTP 验证码。 GET /v1/payin-refunds 按账户、状态、类型和日期范围列出退款, GET /v1/payin-refunds/{id} 返回详情, GET /v1/payin-refunds/{id}/receipt 生成带可校验编码的 PDF 凭证。
  • 收款上的退款状态:已退款的 payin 会返回 refund_status(partial 或 full)、refunded_amount(累计扣除的 USDT)与 refunded_local (累计退还给持卡人的金额)。
  • payin_refunded webhook(webhooks):每一笔退款、撤销 和拒付都会通知其类型、状态、金额以及结果余额。
变更
  • 手续费与汇率价差不予退还:退款时按已入账的毛额扣除,我们为处理该笔支付所收取 的费用保持不变。发卡行通知的拒付会自动执行,并可能使你的余额变为负数,直到你完成 充值。
  • 新增错误码(错误):payin_not_refundable、 refund_not_supported、refund_exceeds_payin 与 invalid_amount。

v2.10

变更
  • 公开服务状态页面重新设计(指南): status_page_url 返回的页面现在会显示国家国旗、支付方式图标、 最近 90 天逐日可用性条、包含总体状态与平均可用率的概览卡片, 以及使用通俗语言描述原因的事件时间线。页面会自动使用你组织的 logo、颜色和网站,仍然不包含 JavaScript 与外部资源(可以嵌入或分享 给客户),/v1/status/{token} 的 JSON 保持不变。

v2.09

新增
  • 以美元结算的国际银行卡(指南):POST /v1/payins 传入 country: "US"、currency: "USD" 与 method: "card",会返回一个带 3-D Secure、使用您机构品牌的托管 checkout payment_url,可收取任意国家 发行的 Visa、Mastercard、American Express、Discover 与 Diners 卡。契约与 玻利维亚的银行卡页面完全相同(customer 可选、success_url/failure_url、 expires_at、尝试次数受限,幂等重试返回同一个 URL),保存卡片也一样: save_card 配合 payer_reference 会在获得付款人同意后保存卡片,用于 后续收款与订阅。3-D Secure 在页面 内完成(若发卡行要求挑战验证,付款人可直接在页面内完成),卡片数据在处理方 的安全字段中录入:绝不经过您的集成。该通道按账户开通 —— GET /v1/payins/methods 是您当前可收款方式的唯一可信来源。
v2.08 · 6 个版本

v2.08

新增
  • 实时服务状态(指南):GET /v1/payouts/methods 与 GET /v1/payins/methods 的每个方式现在都带有新增字段 availability(operational / degraded / down);新的广播 Webhook corridor_status_changed 会通知每一次可用性变化;每个组织都拥有一个 带自有品牌的公开状态页(HTML + JSON,位于 /status/{orgToken} 与 /v1/status/{orgToken}),含 90 天正常运行率与事件历史。状态页 URL 通过 GET /v1/branding 的 status_page_url 字段暴露。

v2.07

新增
  • 面向 AI/MCP 的文档知识包(Docs Knowledge Pack):本文档现在还以结构化、 带版本号的包形式发布于 /mcp-pack/manifest.json (3 种语言的 OpenAPI 规范、逐页纯 Markdown 指南、错误与 Webhook 目录、 含模拟器魔法值的测试指南、端到端配方以及可直接用于 RAG 的分块)。它是 为文档 MCP 服务器提供数据的官方来源。
移除
  • 停用编译后的 Markdown CBPAY_DOCUMENTACION.md:这份仅西班牙语的单一 文档已过时——其替代品是文档知识包(三语、含完整规范)和 MCP 服务器。

v2.06

新增
  • 所有产品指南新增常见问题(FAQ):付款、收款、Checkout、转账、加密货币、 银行服务、卡片、对账单、QR 付款以及已保存卡片 + 订阅指南现在都以常见问题 收尾,并直接链接到错误目录。
  • 错误与 Webhook 目录补全:API 中已存在但参考页面缺失的错误码和 Webhook 事件类型现已完整记录。接口契约无变化。

v2.05

变更
  • 文档大修,第 5 阶段(仅 API 参考,无代码变更):API 参考现将操作 归入三个新标签——Checkout(公开的 /pay/{token} 页面与报价)、 已保存的卡(/v1/stored-cards 及已保存卡查询)和订阅 (/v1/subscriptions)。这些操作此前堆叠在通用的 Payins 标签下; 所有路径与契约均未改变。

v2.04

新增
  • 独立的产品指南(从 payins/payouts 长文中拆分): Checkout 收款链接、 已保存卡片与订阅 和 QR 出金。原有章节保留标题并链接到新指南, 历史锚点仍然有效。
  • 集成流程 新增端到端流程:checkout、已保存卡片与订阅、 QR POS 收款和余额兑换,均附时序图。
变更
  • 产品导航按产品族重组:收款(Money in)、付款(Money out)、 余额与账户、身份与合规、体验 — 取代原先 17 页的扁平列表。
  • 个人资料与安全 与 安全与双因素认证(OTP) 现已互相链接并明确分工: 个人资料指南负责用户的 2FA 因子;OTP 页面负责按操作的验证流程。

v2.03

新增
  • 测试环境贯穿全站:每个产品指南现在都在开头展示测试与正式环境的基础 URL(共享组件),常见问题、快速开始和 介绍也正确描述了测试环境 (https://cryptobank.qbank.cl/platform、pk_test_ 密钥)——此前的 文案错误地声称不存在沙箱。完整说明见 环境与测试。
变更
  • 介绍页的产品目录已补全:checkout、卡片与订阅、QR POS、兑换 (swaps)、独立钱包、比特币和分析报表现已连同各自指南一并列出。
修复
  • 早于多币种余额的规格描述:标签描述已重新对齐(Swaps、AML screening、Cards),“入账到 USDT 余额”等旧文案已更正为结算资产语义 (default_payin_asset、settlement_asset)。
v2.02 · 6 个版本

v2.02

变更
  • 自动兑换为 default_payin_asset 现按真实价格执行,不收取兑换点差 (资金模型):收款入账时已支付其手续费与 汇率,自动兑换为所配置余额不再产生额外成本 — 不存在双重兑换。波动性 资产(BTC/GOLD)的单笔/24 小时限额仍然适用。手动兑换 (POST /v1/swaps)保留其常规点差。

v2.01

新增
  • 新错误码 reserved_idempotency_key(400):POST /v1/swaps (错误)中,前缀为 payin-convert: 或 checkout-swap: 的幂等键保留给系统自动转换(收款默认余额与 checkout)使用,会被拒绝。 请为你的兑换使用其他键。

v2.00

新增
  • 收款默认余额(default_payin_asset) (资金模型):选择收款最终入账到哪个 余额。PUT /v1/settlement 现接受 default_payin_asset(USDT、 USDC、BTC 或 GOLD),GET /v1/settlement 会返回该字段。收款仍先以 USDT 入账(定价与手续费不变),净额随后通过兑换引擎自动兑换为您 选择的资产(与普通兑换相同的点差和限额)。兑换失败时保持 conversion_status: pending_retry 并自动重试。发生兑换时, GET /v1/payins、详情接口与 payin_credited webhook 会包含 settlement_asset 和 conversion_status。
变更
  • 未指定 settlement_asset 创建的 checkout 链接现使用账户的 default_payin_asset(此前始终为 USDT)。

v1.99

新增
  • 银行卡收款专属佣金(payin_card) (佣金):通过银行卡入账的收款(method: card 的 直接 payin、用卡支付的收款链接、以及绑定卡的周期扣款)可以配置独立的 百分比佣金,并支持按币种区分(例如 BOB 与 USD 各自的费率)。若账户 未配置 payin_card,则继续按通用 payin 佣金计费 — 未显式配置时行为 不变。可通过 GET /v1/fees 查询生效佣金(行中新增 currency 字段)。

v1.98

新增
  • GET /v1/banking/accounts/{bankAccountID}(银行服务指南): 获取您某个银行账户的实时详情 — 名称、币种、状态以及接收资金所需的 要件(电汇与本地轨道),位于 data 字段下。用于展示特定账户的入金 指引,无需遍历列表。
变更
  • 银行账户列表:API 现在只返回根据通道配置为您的业务启用的账户。 未启用的账户不再出现在 GET /v1/banking/accounts 中,按 id 查询时 返回 404。

v1.97

修复
  • 收款页 — 默认使用已保存的卡:当输入的邮箱有已保存的卡时,主按钮 现在默认用该卡支付(按钮文案变为「用 VISA ···· 1234 支付」),而不再 发起新卡支付。使用其他卡改为显式操作(「使用其他卡」)。此前,已保存 的卡显示在列表中时按主按钮仍会跳到要求重新填写全部卡信息的页面。
v1.96 · 3 个版本

v1.96

新增
  • 新通道:阿根廷 🇦🇷(出金指南 · 入金指南):
    • 出金支持 ARS 和 USD,通过 bank_transfer 转账到任何 22 位的 CBU 或 CVU(银行账户和虚拟钱包;USD 仅支持 CBU 到 CBU)。收款人只需 name、tax_id(CUIT/CUIL)和 account_number —— 无需 bank_code。
    • 入金支持 ARS,每个账户可创建专属 CVU 账户(POST /v1/payins/deposit-accounts,country: "AR"):每笔到账转账自动入账,无需参考号。CVU 为只收不付:直接扣款尝试会被自动拒绝。
    • 现已在测试环境(staging)通过模拟器提供;生产环境的启用将在银行认证完成后公布 —— 目录(GET /v1/payouts/methods 和 GET /v1/payins/methods)始终是唯一可信来源。

v1.95

新增
  • 随已保存卡片存档的账单信息(payins 指南):付款人保存卡片时填写的账单信息(姓名、地址、城市、邮箱、电话)会与凭证一并保存。再次使用该卡支付时,安全页面自动应用这些信息 — 付款人无需重新输入 — 且只显示脱敏摘要(姓名、部分邮箱和城市),并提供”使用其他信息”链接以便修改。完整信息绝不下发到浏览器:由服务器在授权时应用。
变更
  • 使用已保存卡片须提供持卡人邮箱:在公开的 checkout 页面上,使用已保存的卡现在要求提供保存时的同一持卡人邮箱 — 不匹配则返回 404(个人数据防枚举保护)。

v1.94

修复
  • 结账页 — 银行卡一键支付(收款指南):在公开页面选择银行卡继续时,现在直接跳转到安全支付页 — 移除了需要二次点击的中间按钮。点击已保存的卡即刻发起支付。
  • 结账页的已保存卡:选择已保存的卡后,安全支付页现在始终带上该凭据(显示卡组织与末 4 位,不再要求重新输入卡号)。此前邮箱重新校验可能悄悄丢弃所选卡,页面会再次要求填写全部信息。此外,在同一链接上切换选择(已保存 ↔ 新卡)会重新生成正确的支付会话,而不是复用旧会话。
v1.93 · 3 个版本

v1.93

修复
  • 第三方的银行 webhook(webhooks、银行指南):当你账户注册的第三方验证状态变化时,banking_customer_status_changed webhook 现在也会触发(此前只有自己档案的事件送达)。payload 新增 customer_kind(self | third_party),第三方还附 third_party_id(与 GET /v1/banking/third-parties/{id} 的 id 相同)。

v1.92

修复
  • payin 历史中的 checkout 收款金额(payins 指南):GET /v1/payins 和 GET /v1/payins/{payin_id} 现在在所有状态(包括待支付和已过期)都返回 checkout 和 QR POS 收款的计价 — settlement_asset + asset_amount(适用时还有 conversion_status)。此前金额只在入账后出现,待支付的行没有金额。此外,以加密货币或 CBPay 应用结算的收款即使没有 fx_rate 也会返回 usdt_credited。CSV/XLSX 导出新增 settlement_asset 和 asset_amount 列。

v1.91

新增
  • 订阅(计划性循环扣款)(payins 指南):平台为已存卡的扣款执行排期。POST /v1/subscriptions(interval daily/weekly/monthly/yearly、可选 start_at 用于试用、必填 idempotency_key)在创建时扣款首个周期并自动触发其余周期。完整资源 GET /v1/subscriptions(+/{id},过滤 status/stored_card_id/payer_reference)及生命周期 POST .../pause · /resume · /cancel。被拒时催收(每天重试 ×3 ⇒ past_due),恢复时不补扣,撤销卡片时自动取消。每次成功扣款像普通卡 payin 一样入账(payin_credited 带 subscription_id)。新增 webhook subscription_status_changed。
v1.90
新增
  • 已保存卡片与循环扣款(payins 指南):card 方式现支持存储凭证(卡组织 COF 规范)。POST /v1/payins 接受 save_card(托管页面上的同意复选框)、payer_reference(你的客户 ID)和 stored_card_id(使用已保存的卡支付,免输卡号;3-D Secure 照常运行)。新资源 GET /v1/stored-cards(+/{id}、DELETE 撤销)以及付款人不在场的商户发起扣款:POST /v1/stored-cards/{id}/charges(recurring 用于订阅;必须提供 idempotency_key — 重试绝不重复扣款)。卡号从不存在于平台:仅展示数据(卡组织、末四位、有效期)。新增 webhook card_stored 和 stored_card_revoked;新增错误 422 stored_card_revoked(错误)。
v1.89 · 2 个版本

v1.89

新增
  • 对外支付的合规控制(出金指南、错误):出金、带受益人姓名的加密货币提现以及 collect 收款现在会在资金移动之前经过额外的合规控制。已记录的错误:403 compliance_hold(操作被拦截且未被创建 —— 未扣款;按政策不披露具体原因,请携带时间戳联系支持)与 503 compliance_check_unavailable(合规校验暂时无法完成;操作未被创建 —— 请使用相同的 idempotency_key 重试)。

v1.88

修复
  • AML 筛查的个人字段格式(指南):筛查引擎要求 date_of_birth 为 {year, month, day} 对象(纯字符串 "YYYY-MM-DD" 返回 422)、nationality 为 ISO-3166 代码的数组、 personal_identification[] 为 { "issuing_country", "number" } 且不带 type 字段。指南与 spec 示例已按实测验证的格式更新。
v1.87 · 4 个版本

v1.87

新增
  • QR Crypto POS — 面向处理商的定额加密货币二维码收款(指南): 运营实体 POS 终端的企业账户可将其商户注册为已验证商户(已批准的第三方 KYB/KYC),并按笔生成带专属地址和二维码的加密货币收款(USDT、USDC、 BTC)。面向 POS 的支付早期检测(数秒内 confirming)、入账并自动兑换 为结算资产、收款/webhook 按商户归属、对账汇总(GET /v1/pos/summary, 含按商户的信息性佣金与应分配净额),以及经加密货币提现通道的退款并带 硬上限(绝不超过已收金额)。新路由位于 /v1/pos/*(API 参考中的 QR Crypto POS 标签);部分支付会累计,过期收款收到的迟到支付同样入账。

v1.86

修复
  • 比特币加密货币二维码:结账页二维码现在使用裸 bech32 地址(与 TRON/ETH 相同)。Binance 等交易所应用会将 BIP-21 URI (bitcoin:…?amount=…)判为「无效二维码」;精确金额仍显示在旁边 并可复制。
  • 收款页:白标 favicon(组织符号),面板文案不再在词中间断行 (「momento」被拆成「moment」/「o」)— 激进的 word-break 仅保留 在等宽地址上。

v1.85

新增
  • 每个收款链接的专属 CLABE(墨西哥):在通用收款链接上生成墨西哥 bank_transfer 支付选项时,现在会签发(或从可回收池中取出)一个 该链接专属的 CLABE。付款人只需转账精确金额,无需填写参考码: 入账会按收款账户自动检测并路由到该链接。支付选项的 payload 中 destination 带有 dedicated: true;若无法签发专属账户,则降级为 传统方式(商户账户 + 转账附言中必填 reference)。链接结清后 (已支付或已过期),CLABE 经过冷却期后回收再用。

v1.84

新增
  • 通用收款链接支持拉取式收款(委内瑞拉):结账页面现在提供直接从付款人 账户扣款的方式(委内瑞拉的 c2p 和 debito_inmediato)。付款人在同一 页面填写银行、证件号、电话或账户以及 OTP;金额始终是报价时冻结的金额。 新增公开端点:POST /pay/{token}/collect/otp(通道按需发送密码时请求 OTP)和 POST /pay/{token}/collect(执行扣款;若通道同步确认,链接在 同一次调用中完成结算)。这些方式在 GET /pay/{token}/quote 目录中带 collect: true。
  • 按国家的多币种法币:报价中的每个国家在 options[] 中列出其通道 — 每个方式+币种一行(例如玻利维亚同时提供 BOB 和 USD 的二维码),并在 country_quote 中带各自的 local_amount。生成以多种币种提供的方式时 必须传 &currency=YYY(400 currency_required 错误现在适用于任何 方式,不再只限银行卡)。
  • 银行转账的目标账户:当通道使用专属收款账户时(墨西哥的 CLABE), bank_transfer 的生成结果除参考码外还包含 destination(类型、账号和 收款人)— 付款人无需离开页面即可知道转账目标。
变更
  • 支付页面改用 SVG 旗帜:国家和币种旗帜现在是 SVG 图片(在 Windows、 macOS 和移动端显示一致;此前部分系统会把国家代码显示为纯文本)。银行卡 页签的旗帜按扣款币种推导(USD → 美国国旗,即使收单机构位于其他 国家)。
修复
  • 结账页面不再因为只是打开着就返回 429 too_many_attempts:读取、生成、 OTP 和扣款的流量限制现在彼此独立。
v1.83 · 10 个版本

v1.83

新增
  • 通用收款链接新增”银行卡”标签页:银行卡支付从 Fiat 标签页移到 独立的标签页,按扣款币种列出(目前为 BOB 和 USD;未来收单机构 的币种会自动出现)。GET /pay/{token}/quote 返回新的 cards[] 目录(每个选项含国家、币种和 local_amount),countries[] 的 方式列表不再包含 card。物化银行卡须指定币种: POST /pay/{token}/methods/card?country=XX&currency=YYY —— 缺失时 返回新错误 400 currency_required。每种币种是独立的物化,各自有 托管支付页面。
变更
  • 支付页面视觉升级:金额旁及加密货币分组显示资产 Logo(USDT、 USDC、BTC、GOLD),Fiat 选择器和银行卡行显示国旗,各方式带图标, 并新增醒目的到期计时器(带时钟的胶囊;1 小时内显示倒计时, 10 分钟内变红)。
修复
  • 结账页面不再每隔几秒自动滚动到当前面板:自动刷新仅在数据变化时 重新渲染且不移动滚动条(只有手动选择支付方式才会将详情滚入视图)。

v1.82

变更
  • 通用收款链接支付页面全新改版:支付选项现组织为三个标签页 —— CBPay(商户二维码 + 别名,附复制按钮)、Crypto(币种按网络 分组;新网络启用后自动出现)和 Fiat(国家选择器 + 各国支付方式 及即时报出的当地金额)。别名、地址、金额和参考号均带复制按钮。API 无任何变化:URL、创建契约和公开端点(/state、/quote、 /methods/{method})保持不变。

v1.81

修复
  • QR 出金——在创建 payout 之前进行校验:POST /v1/payouts/qr/scan 遇到不可读或动态二维码时,现在返回 400 invalid_qr_payload 及具体原因 (之前返回泛化的 502)。在巴西的 confirm 中,金额与固定金额 PIX 二维码不一致时返回 422,出金为 failed 且退款已自动完成—— 二维码保持有效,可用正确金额和新的键重试。
  • 静态 PIX 二维码可复用:“一个 QR = 一笔支付” 的守卫不再适用于巴西的 静态 PIX 二维码(它们天生会被支付多次);每笔支付的保护是您的 idempotency_key,在巴西的每次 confirm 中均为必填。

v1.80

新增
  • 巴西 PIX 二维码出金(BR/BRL):两步流程 POST /v1/payouts/qr/scan → POST /v1/payouts/qr/confirm 现已接受巴西的 静态 PIX 二维码(含 “copia e cola” 代码)——传 country: "BR" 与 currency: "BRL"。扫码在本地解码 BR Code(免费),返回商户名称、PIX 密钥与金额;确认步骤通过 PIX 付款,计费与常规 payout 完全相同。amount 始终必填:固定金额二维码要求金额完全一致(不一致时返回 422,出金为 failed 且自动退款——该二维码不会作废)。静态 PIX 二维码可复用: 每笔支付携带自己的 idempotency_key。动态或损坏的二维码返回 400 invalid_qr_payload——请改用 pix 方式并提供收款人的密钥。 测试环境已提供示例二维码与魔法值(.99 金额失败)—— 见测试环境。详见 payouts 指南。

v1.79

变更
  • 通用收款链接 v2 —— 多国家 + 结算到您选择的余额(相对昨天 v1 形态为 Breaking):收款现在通过 settlement_asset 以您 4 个虚拟余额中的任意 一个计价(默认 USDT,可选 USDC、BTC、GOLD),amount 以该资产 计(“50” USDT、“0.001” BTC、“2” 克黄金);传 currency 将返回 400 (已存在的 v1 链接继续有效)。付款人可以看到所有有可用收款通道的国家 (选择国家 → 显示该国方式及物化时冻结的本地金额报价)、4 个加密货币选项 及可扫描的二维码(qr_payload + qr_png_base64;BTC 用 BIP-21, TRON/ETH 代币用原始地址 —— Trust Wallet、MetaMask、Binance 等外部钱包 可直接识别),以及商户的 CBPay 二维码 + 别名,用 App 扫码即刻付款 (深链 cbpay:pay?to=…&checkout=…;POST /v1/transfers 接受 checkout_token 并在服务端校验应付额)。每笔付款入账时自动兑换为 settlement_asset(相同资产则不兑换);/state 可见 conversion_status。新增公开端点 GET {checkout_url}/quote,返回国家 目录、加密货币应付额与 CBPay 应付额。新增错误 country_required、 country_unavailable、settlement_asset_disabled 与 checkout_amount_mismatch。详见 收款指南。

v1.78

新增
  • 主动收款失败的拒绝详情:当主动收款(collect,C2P 或即时扣款) 变为 failed 时,payin 现在包含 failure 对象,说明拒绝来源 (provider = 付款人的银行,core = 扣款前校验)以及具体的代码和 消息——在 POST 的同步响应、GET /v1/payins/{id} 和 webhook 中均可 见。此前仅暴露通用的 failed 状态。详见 payins 指南。

v1.77

新增
  • 通用收款链接(checkout):POST /v1/payins 接受 method: "checkout" 并返回 checkout_url —— 一个带品牌的公开页面, 付款人自行选择支付方式:QR、银行卡、银行转账或加密货币(TRON 上的 USDT、以太坊上的 USDT/USDC 以及 BTC),并为该笔收款生成专属充值地址, 支持部分支付累加。一个链接 = 一笔收款:最先完成支付的方式生效。状态可 通过 GET {checkout_url}/state 免认证查询;加密支付的 payin_credited 事件附带 settled_via 和 crypto_amount。支持 success_url、 failure_url、expires_in(10 分钟到 7 天)与幂等(重试返回同一链接)。 新增错误 already_paid、checkout_expired 与 method_unavailable。 详见收款指南。

v1.76

变更
  • 卡支付捕获前认证过滤器:只有当 3-D Secure 验证以认证成功或已尝试 结束、且认证数据完整时,卡扣款才会发送给处理方;未经真实认证的尝试会在 资金移动前被拒绝,付款人可以重试。支付页面还延长了设备数据收集时间 (约 11 秒)以提高发卡行的批准率。在测试环境中,金额以 .44 结尾可 模拟被该过滤器拒绝的尝试(完整表格见 测试环境)。

v1.75

新增
  • payin 银行卡支付(card):POST /v1/payins 接受 method: "card"(玻利维亚,BOB 或 USD)并返回 payment_url — 一个带有你组织品牌的托管支付页面,付款人在安全字段中输入银行卡并完成其 银行的 3-D Secure 验证。可选字段 customer、success_url、 failure_url 与 expires_at。支付确认通过 payin_received webhook 送达并像任何 payin 一样入账;若无人支付,payin_expired 会关闭该收款。 详见payin 指南。

v1.74

新增
  • swaps 与地址筛查响应中的 account_id:POST/GET /v1/swaps 与 POST/GET /v1/screenings/addresses 的响应现在包含 account_id (操作所属的账户)。对单账户集成仅作参考;管理视图用它来归属每条记录。
v1.73 · 5 个版本

v1.73

新增
  • 比特币链上通道(btc/btc):crypto 产品支持的第四条网络。 每个账户现在出生即拥有四个充值钱包(新增比特币,bech32 地址 bc1q…);BTC 充值入账到 BTC 余额(约 30 分钟确认,3 个区块), 链上提现接受 chain: "btc"(支持 bech32、taproot 与 legacy 目标 地址;网络费由操作承担——收款方收到精确金额)。 隔离钱包同样支持 btc/btc 组合(没有 gas:费用从钱包余额中扣除)。Travel Rule 与其他网络 一致,按 USD 估值。详见 crypto 指南。

v1.72

变更
  • 两步登录同样遵循手机号绑定冷却期:登录 2FA 为 SMS/WhatsApp 且 号码为最近绑定且未验证时,登录验证码会通过更强的因素发出(身份 验证器应用,其次登录邮箱),而不是发送到该手机号——登录响应中会 返回实际使用的 channel。没有替代因素时,登录返回 403 phone_binding_cooldown,直到冷却期结束。验证码绝不会发送到 从当前会话绑定的号码。详见安全与 2FA 指南。

v1.71

变更
  • 手机号处于冷却期时,OTP 质询自动改用更强的因素:手机号为最近 绑定(24 小时冷却期)时,POST /v1/otp/challenges 在您已注册身份 验证器应用或已验证邮箱的情况下不再阻止 — 质询会自动通过该渠道发出 (层级 totp > email),响应中会返回实际使用的渠道。 403 phone_binding_cooldown 仅在没有任何替代因素时返回。此前, 即使拥有更强的因素,冷却期也会阻止所有 2FA 放宽操作(甚至包括停用 email 渠道)。详见安全与 2FA 指南。

v1.70

新增
  • 已验证身份成为档案数据的最终来源:KYC/KYB 入驻获批后, display_name(个人 = 名 + 姓;企业 = 法定名称)、tax_id 和 country 会自动由已验证的身份回填。详见 KYC 指南 与档案指南。
变更
  • PATCH /v1/me 在验证获批后锁定身份字段:当 kyc_status: approved 时,修改 display_name、tax_id 或 country 将返回 409 identity_locked(错误页新增该代码)。 phone 仍可通过其专属验证流程修改。

v1.69

新增
  • AML 筛查 PDF 报告: GET /v1/aml/screenings/{screeningID}/report 可将历史记录中的任一筛查 下载为带你品牌的高管级 PDF 报告 —— 封面呈现决策及其风险信号灯、风险 指标(制裁、观察名单、PEP、负面媒体等)、合并匹配、别名、术语表,以及 列明所查国际数据源的最终背书章节。通过 lang=en|es|zh 支持三语 (默认英文)。纯读取,无费用。详见 AML 指南 的新章节。
  • 新错误码 invalid_language(HTTP 400):PDF 报告的 lang 不是 en、es 或 zh。详见错误页面。
修复
  • AML 筛查的企业字段:示例与 spec 曾将 tax_id/registration_number/country_of_incorporation 记为 customer.company 的扁平字段,但筛查引擎会以 422 拒绝。标识符应放在 registration_authority_identification,国家放在 place_of_registration,incorporation_date 为 {year, month, day} 对象。指南与 spec 已修正(已在生产环境验证)。
v1.68 · 7 个版本

v1.68

新增
  • 新走廊:厄瓜多尔(USD),支持四种出金方式 —— bank_transfer (银行转账)、deuna(DeUna 钱包)、cash_pickup(柜台取现,无需 账户)和 cnb(非银行代理点)。收款人支持结构化姓名 (given_name/first_surname/…)或从 name 自动拆分,并可附带 可选的汇款人信息块(sender_name 或其结构化字段)。各方式示例见 出金指南与 API 规范。
  • 新错误码 channel_unavailable(HTTP 503):该走廊的支付通道 暂时不可用。请稍后使用相同的 idempotency_key 重试。详见 错误页面。

v1.67

新增
  • 测试账户生而带有数据:测试环境的每个新账户都自带约 6 个月的 真实感演示历史,覆盖所有产品(payouts、payins、转账、加密、兑换、 卡片、banking、联系人……),余额、对账单和分析报表开箱即用。适用于 所有创建路径(注册、社交登录、管理员创建及控制台的 test/live 开关)。
变更
  • 环境完全独立:测试数据不再从生产快照刷新 —— 两个环境之间不复制 任何内容。已更新环境与测试指南。

v1.66

新增
  • 官方 MCP 服务器上线 https://mcp.cbpayapp.com:将你的 AI 编辑器或 助手(Cursor、VS Code、Claude、ChatGPT 及任何 MCP 客户端)连接到本文档 —— 搜索、带真实示例的端点与错误目录,无需离开编辑器。只读、无需身份 验证。新增 MCP 服务器页面,支持一键安装与按客户端配置。

v1.65

变更
  • 测试环境:新账户现在生而带有 kyc_status: approved —— 您可以 立即演练所有产品,没有入驻闸门。适用于所有创建路径(注册、社交 登录、管理员创建以及控制台的 test/live 切换);现有测试账户已追溯 批准。live 环境不变:账户生而未验证,资金转出前 KYC/KYB 仍为 强制要求。要在测试模式演练验证流程,请使用第三方 KYC/KYB 验证。

v1.64

变更
  • PUT /v1/otp/preferences:通过电话渠道(sms/whatsapp)为 login 操作启用 2FA 时,现在要求账户电话号码已验证(先完成任意 SMS/WhatsApp OTP 挑战)。号码未验证时 API 返回 409 phone_verification_required。该保障可防止输错的号码在启用登录 2FA 时把你锁在账户外。

v1.63

修复
  • POST /v1/me/passkeys/register/begin 与 DELETE /v1/me/passkeys/{passkeyID} 现在接受不带请求体的请求,与规范 文档一致(请求体可选)。此前会返回 400 invalid_json。有密码的账户仍 必须提供当前密码(缺失或错误时返回 403 invalid_password);仅使用 社交登录的账户凭其会话即可通过。

v1.62

修复
  • POST /v1/me/totp/enroll 现在接受不带请求体的请求,与规范文档一致 (请求体可选)。此前会返回 400 invalid_json。有密码的账户仍必须提供 当前密码(缺失或错误时返回 403 invalid_password);仅使用社交登录的 账户凭其会话即可通过。
  • PUT /v1/otp/preferences 选择 email 或 totp 渠道时返回 500 错误; 已修复 — 四个渠道(sms、whatsapp、email、totp)均可正常保存。
变更
  • PDF 对账单:操作状态现在以颜色区分(绿色已完成、琥珀色待处理、红色 失败),便于快速浏览。
v1.61 · 6 个版本

v1.61

新增 — 列表支持 CSV / Excel 导出
  • movements、payouts、payins 与 transfers 列表现在接受 format=csv 或 format=xlsx 参数,将行数据下载为可直接用于会计的 文件(每次下载最多 10,000 行;from/to、status 等过滤器同样 生效)。
  • 不带 format 时响应仍是常规的分页 JSON —— 无兼容性变更。

v1.60

Breaking — 隔离钱包迁移至 /v1/segregated-wallets
  • 所有隔离钱包路由从 /v1/wallets* 重命名为 /v1/segregated-wallets*。 方法、参数、响应结构、费用和 webhook 均不变——只有路径前缀改变。 没有兼容别名:旧的 /v1/wallets* 路由现在返回 404。
  • 映射(15 条路由遵循同一模式):
  • 钱包发送/入金的响应、webhook 和回执邮件中的 receipt_url 现在指向 新路径。
  • 原因:通用前缀 /v1/wallets 经常与 crypto 产品的 充值钱包混淆。充值钱包不受影响,仍位于 /v1/crypto/wallets。
新增 — 每个钱包响应带有 type 鉴别字段
  • 充值钱包(/v1/crypto/wallets)现在包含 type: "deposit" 和 receive_only: true。
  • 隔离钱包包含 type: "segregated"。
  • 请用它防御性地区分两个产品——不要只依赖路由。

v1.59

新增 — payin_expired webhook:未支付代收的自动关闭
  • 当一笔待支付的代收(二维码或托管 checkout)在未收到付款的情况下过期或 失败时,payin 现在会自动从 pending 变为 expired(或 failed)—— 此前可能会无限期停留在 pending。
  • 新增 payin_expired webhook 事件,携带 payin_id、最终状态、 通道和参考号,让您无需轮询即可在自己的系统中关闭该笔代收。可通过 POST /v1/webhooks/subscriptions 订阅。
  • 任何情况下都不产生资金变动:如需重新收款,请创建新的 payin。

v1.58

变更 — 凭证、对账单与邮件全新设计
  • 所有 PDF 凭证(GET .../receipt)升级为银行级设计:带 logo 与凭证编号的页眉、 产品图标、突出显示的金额、双栏明细、带二维码的”可验证文档”区块,以及机构化页脚。 品牌符号以水印形式淡淡呈现;未完成的操作仍保留状态水印。
  • 对账单 PDF(GET /v1/reports/statement?format=pdf)新增带图标的汇总卡片、 对账已验证徽章及各分区图标;Excel 导出结构不变。
  • 邮件(凭证、验证码与安全通知)现共用带有贵组织机构化页眉与页脚的品牌模板。
  • 法币转出凭证中的收款银行始终按名称显示:若操作以目录中的 bank_code 创建, 会自动解析为银行名称。
  • API 无变化:路由与响应结构不变,仅文档与邮件的外观更新。

v1.57

新增 — 用户会话的刷新令牌(refresh tokens)
  • 每次登录(密码、OTP、社交登录、通行密钥、handoff 和注册)现在会在 24 小时 access_token 之外一并返回一次性 refresh_token(rt_…), 用于免重新登录续期会话:POST /v1/auth/refresh 签发新的令牌对并轮换 刷新令牌(每次轮换有效 30 天,自最初登录起绝对上限 90 天)。详情与 安全规则见身份认证 → 会话续期。
  • 严格轮换与防盗检测:交换时会吊销该设备之前的 access token;提交 已被交换过的刷新令牌会吊销整条令牌链,并在 GET /v1/me/security/events 中记录 refresh_token_reuse 事件。退出 登录、吊销会话或修改密码也会使刷新令牌失效。
  • 新错误码:401 invalid_refresh_token。API key(pk_)不受影响: 永不过期,也不使用刷新机制。

v1.56

新增 — 使用模拟资金的测试环境(沙盒)
  • 新的 test 环境:https://cryptobank.qbank.cl/platform。API 完全 相同,所有通道由确定性的内部模拟器提供服务 —— 始终可用,不依赖任何 第三方。操作在几秒内自动完成,魔法值(.99/.77 金额、 REJECT 收款人、OTP 000000 等)可强制触发其他所有结果。完整指南见 环境与测试。
  • 按环境区分的 API 密钥:test 只签发和接受 pk_test_ 密钥;live 只接受 pk_。另一环境的密钥返回 401 —— 不可能误用错环境。
  • 每个响应都带有 CBPay-Environment 头(test | live), GET /healthz 返回 livemode。
  • 一键 test/live 切换:POST /v1/auth/environment-handoff(live) 签发一次性 60 秒令牌,在 POST /v1/auth/handoff(test)兑换为测试 环境会话,并自动创建镜像账户。
v1.55 · 9 个版本

v1.55

新增 — AML 筛查审计历史
  • GET /v1/aml/screenings 与 GET /v1/aml/screenings/{screeningID} 列出并查询 本地保存的每条 AML 筛查(个人、企业及重新筛查)——主体、风险、费用与完整结果。
  • POST /v1/aml/screenings 与 POST /v1/aml/rescreen 现须 idempotency_key (操作收费)。相同键重放返回原记录且 idempotency_hit: true,不会重复扣费。
  • PATCH /v1/aml/monitoring 将每次启用/停用写入同一历史(kind: monitoring); 状态实际变更时须提供 idempotency_key(启用会收费)。

v1.54

新增 — 链上提现的 Travel Rule(FATF R.16)
  • 超过配置阈值(默认 1,000 USD)的加密货币提现,现在必须在资金移动前 申报受益人:自有钱包用 wallet_type: "self_hosted" + beneficiary_name;目的地在其他机构时用 travel_address + beneficiary_name(数据交换内联完成,付款地址由收款机构提供)。 低于阈值一切不变。
  • 提现响应新增 travel_rule_status (not_required / self_hosted_attested / approved)。
  • 新增错误码:travel_rule_required、 travel_rule_beneficiary_required、travel_rule_address_mismatch、 travel_rule_rejected、travel_rule_pending、 travel_rule_incomplete_approval、travel_rule_unavailable。详见 加密货币指南与错误页。

v1.53

新增 — 余额历史中的银行序列
  • GET /v1/balances/history 的 assets 现在包含银行账户 (BANK_USD、BANK_EUR)的每日序列,各以自身货币(2 位小数)呈现, 可作为 USDT/USDC/BTC/GOLD 旁的又一筛选项直接绘图。它们仍不计入 total_usd 聚合——该聚合仅覆盖运营余额。 分析指南已更新。

v1.52

新增 — 付款与收款列表的国家筛选
  • GET /v1/payouts 和 GET /v1/payins 支持 country 筛选 (ISO 3166-1 alpha-2,例如 ?country=MX),可与 status、 from/to 及分页组合使用。付款与 收款指南已更新。
  • GET /v1/rates 的 fees 块现在返回有效费用配置(组织默认值已与账户覆盖项解析合并)。 此前无覆盖项的账户会看到 fees: [];请用此块在创建操作前报价确切费用。

v1.51

变更 — 按账户类型的钱包限额
  • 充值钱包:每个账户——个人和企业——每个受支持组合(tron/usdt、 eth/usdt、eth/usdc)都恰好持有一个充值钱包,注册时自动免费 开通。POST /v1/crypto/wallets 现在仅用于补齐缺失的组合;组合已存在时 对所有账户类型都返回 422 wallet_limit_reached(此前企业可创建更多)。
  • 隔离钱包:现在个人账户也可使用,每个网络+资产组合限 1 个 (第二次尝试返回 422 wallet_limit_reached)。企业账户仍不限数量。 403 company_required 错误不再适用于隔离钱包。
  • 加密货币与隔离钱包 指南、个人与企业页面及 错误页面已更新。

v1.50

新增 — 持续交易监控(合规控制)
  • 平台现已通过银行级合规控制实时监控每一笔操作。对绝大多数客户而言这是 无感的:不改变任何流程,也不会增加可感知的延迟。
  • 新增错误码已记录在错误页面:403 compliance_hold (操作被合规拦截)、403 geo_restricted(不支持的司法辖区)和 503 compliance_check_unavailable(合规检查暂时不可用 — 操作未发出; 请使用相同的幂等键重试)。

v1.49

新增 — 文档支持 3 种语言(默认英语)
  • 本文档现已完整提供英语(默认语言)、西班牙语和简体中文 三个版本。可通过站点顶部的语言选择器切换语言。
  • API Reference 同样提供三种语言版本(端点与示例完全一致,仅描述文字 不同)。
  • Postman 集合与编译版 Markdown 指南在任意语言版本下都保持最新。

v1.48

新增 — 钱包筛查(区块链地址的 AML 风险)
  • 新产品:POST /v1/screenings/addresses 依据全球链上情报(制裁名单、 非法资金暴露等)评估任意区块链地址,并返回 Low/Medium/High/Severe 风险等级及完整证据。每次扫描收取固定 费用(address_screening,失败时自动退款),且必须携带幂等键。历史 记录可通过 GET /v1/screenings/addresses(+/{id})查询。
  • 免费的自动保护:链上提现在签名前会先评估目标地址(严重风险 ⇒ 拒绝并全额退款);入账存款在入账前会先评估发送方(严重 ⇒ 暂扣待 合规审核;高风险 ⇒ 入账并附带警报)。
  • 新增 webhook:crypto_deposit_held 和 crypto_deposit_alert。
  • 新增指南:钱包筛查。

v1.47

新增 — 通过 CDN 提供的公开资源(头像、品牌素材、收款二维码)
  • CDN 头像:avatar_url(出现在 PUT /v1/me/avatar、 GET /v1/resolve 和联系人接口中)现在是一个绝对公开 URL,图片 发布到 CDN 后无需认证即可加载;GET /v1/avatars/{accountID} 以 302 重定向到该 URL(旧版头像仍然直接返回)。
  • 品牌素材 URL:GET /v1/branding 新增 logo_url 和 symbol_url —— 指向 Logo 的公开 CDN URL,前端无需解码 base64 即可套用主题 (*_png_base64 字段依然保留)。
  • 收款二维码(Payin QR):QR 收款(POST /v1/payins,method 为 qr)新增 qr_image_url,即发布到 CDN 的二维码 PNG,与原有的 base64 qr_image 并存。直接放进 <img> 标签即可。
不会破坏任何现有集成:所有既有字段均保留;这些 URL 都是新增的。 指南:个人资料 与 收款。
v1.46 · 7 个版本

v1.46

新增 — 合规目录
  • 新增 GET /v1/aml/catalogs:构建合规与验证表单所需的全部目录 (性别、各国法律实体形式、收入/财富来源、行业标准、ISO-3166 国家 与行政区划)。这些数据此前无法通过 API 获取。
变更
  • GET /v1/rates 与 GET /v1/rates/history 的 asset_prices 区块 不再包含内部字段 source;请使用 settlement_grade 和 updated_at 来判断价格是否可执行以及其新鲜程度。
指南:AML 筛查。

v1.45

新增 — 每个账户自创建起即拥有其充值钱包
  • 账户创建时(个人或企业),系统会自动且免费开通其三个加密充值 钱包:tron/usdt、eth/usdt 和 eth/usdc。注册完成后, GET /v1/crypto/wallets 即可返回这三个地址(开通在后台进行;在 注册的当秒查询可能需要稍等片刻)。
  • POST /v1/crypto/wallets 现在用于创建额外的钱包(企业账户); 个人账户自注册起已占用每种组合的名额。此变更之前创建的账户已补齐 缺失的钱包。
变更
  • 公开账户注册现在按 IP 限流(429 too_many_attempts)。
指南:加密货币。

v1.44

新增 — 完整可追溯性:对账单中的银行业务、费用明细拆分与钱包托管
  • 更丰富的对账单:新增 card_transactions(卡消费)、swaps (余额兑换)和 banking_operations 区块。如果你使用 Banking,你的 银行账户会以 BANK_USD/BANK_EUR 镜像余额的形式在 assets 区块 中对账。
  • 费用明细拆分:payout、payin 和加密提现现在将费用拆分为 fee_percent 和 fee_fixed(两者相加恰好等于 fee);独立收费 项带有 fee_model: "fixed",并在 PDF/Excel 中标注为 Fixed Com。
  • 新增回执:GET /v1/banking/operations/{id}/receipt、 GET /v1/wallets/{walletID}/sends/{sendID}/receipt 和 GET /v1/wallets/{walletID}/deposits/{depositID}/receipt。 banking_operation_status_changed webhook 现在包含 receipt_url。
  • 独立钱包托管:每个钱包新增 custody 字段(cbpay | client); 平台会同步完整的链上活动,并发送 wallet_external_movement webhook (在平台之外签名的转账,client 托管下属于预期行为)以及 wallet_key_compromise_suspected(严重警报)。
  • 分析(Analytics):新增 sections.banking.volume(经由你的银行 账户流转的资金,同时计入 gross_volume)、 sections.verifications.fees_by_kind(KYC 与 KYB 支出分开统计)、 sections.adjustments 和 deposits.wallet_fees_usd。
  • 按钱包保证的账务(cbpay 托管):对账单中的全生命周期对账, 以及每笔发送详情中的 funding_sources(充值→发送的 FIFO 归因)。 BANK_* 镜像余额也会出现在 GET /v1/balances 中,并带有 custody: "banking"。
指南:对账单、银行业务、 独立钱包、 回执 与 分析。

v1.43

新增 — 面向仪表盘的历史序列
  • GET /v1/rates/history:你账户汇率的演变(每个数据点均含 payout 和 payin 两侧),支持 day 或 hour 粒度,并为每种货币 提供带符号的 change_pct —— 可直接用于带 “+3.4% / −3.0%” 徽章的 汇率图表。还包含 BTC 和 GOLD 的美元参考序列。
  • GET /v1/balances/history:你余额的每日演变 —— 每种资产一条 序列,包含每日收盘余额(无缺口)、按每日历史价格估值的美元汇总 序列、期间的流入/流出以及当前快照 —— 带图表的余额卡片所需的一切。
  • 汇率历史以约 90 天的每日汇率回填起步,此后持续记录。
完整示例见 分析。

v1.42

新增 — 带真实性验证的 PDF 回执
  • 每个交易类产品都有其品牌化 PDF 回执:payout、payin、内部转账、 加密提现与充值(GET /v1/crypto/transactions 中新增 deposit_id)、 swap 及卡消费均支持 GET .../receipt。语言参数 ?lang=es|en。
  • 这些产品的每个响应以及最终状态的 webhook 中均包含 receipt_url: 前端永远无需手动拼接 URL。
  • 公开真实性验证:每份 PDF 都带有签名代码和二维码,扫码打开 GET /verify/receipts/{code}(无需凭证)—— 对 API 返回 JSON,对 浏览器返回品牌化网页,始终显示真实、当前的状态与金额,绝不 展示收款人的个人数据。
  • 未完成操作的回执带有对角线水印(“PROCESSING” / “FAILED”): 处理中的 PDF 永远不可能被冒充为付款凭证。
  • 操作到达最终状态时自动发送邮件并附上 PDF,可按账户退订 (PATCH /v1/me,设置 receipt_emails: false)。
新增 — 品牌
  • GET /v1/branding:平台的生效品牌(Logo、颜色、名称),白标前端 可直接通过 API 套用主题。
变更
  • PDF 对账单 现在使用品牌的真实 Logo 与 Inter 字体渲染(此前为文字字标),Excel 也在汇总表中加入了 Logo。
完整指南见 回执。

v1.41

新增 — 独立钱包(仅限企业账户)
  • 拥有独立余额(不在总账内)的链上钱包:创建 (POST /v1/wallets)、列表与详情,导入带私钥的外部钱包 (POST /v1/wallets/import),导出私钥 (POST /v1/wallets/{id}/export,共享托管),以及直接从钱包 发送加密货币(POST /v1/wallets/{id}/sends)。
  • 实时链上查询:GET .../balance(含 gas)、.../deposits 和 .../transactions;可配置的自动归集(auto-forward) (GET/POST .../auto-forward)。
  • 发送所需的 gas 由客户承担:没有 gas 时发送返回 422 insufficient_gas。导入与导出要求已登录的用户会话并开启 2FA。
  • 新增费用:wallet_import、wallet_export、wallet_send。
  • 新增 webhook:wallet_deposit_received、wallet_send_status_changed、 wallet_key_exported。新增服务开关:wallets。
  • 对账单 与 仪表盘 均包含独立钱包区块。
完整指南见 独立钱包。

v1.40

新增 — 账户资料、凭证与安全
  • 密码:自助修改(POST /v1/me/password,会吊销其他所有会话) 以及基于验证码的找回(POST /v1/auth/password/forgot → POST /v1/auth/password/reset),通过邮箱或已验证的手机号。forgot 始终返回 200(绝不泄露账户是否存在)。
  • 登录邮箱:经验证的变更(POST /v1/me/email/change → confirm, 验证码发送到新邮箱)以及当前邮箱的验证 (POST /v1/me/email/verify)。
  • 永久别名(PUT /v1/me/alias)与个人资料二维码 (GET /v1/me/qr):用于标识你的账户以接收转账。转账接受 to_alias 和 to_qr_token;GET /v1/resolve 可在发送前预览 收款人。
  • 头像:PUT/DELETE /v1/me/avatar 与 GET /v1/avatars/{id}。
  • 自助 2FA(GET/PUT /v1/otp/preferences):按操作启用并选择 渠道 —— 除 SMS/WhatsApp 之外,现在还支持邮箱和验证器应用 (TOTP)。加强安全不受限制;降低安全等级需要验证。
  • 验证器应用(TOTP):POST /v1/me/totp/enroll(二维码)→ confirm(返回 10 个一次性备份码)、DELETE,以及 POST /v1/me/totp/recovery-codes 用于重新生成备份码。
  • 通行密钥(Passkeys / WebAuthn):使用设备生物识别(Face ID、 Touch ID、Windows Hello、安全密钥)的免密码登录。注册 (/v1/me/passkeys/register/begin|finish)、管理(GET、DELETE) 与登录(/v1/auth/passkey/login/begin|finish)。
  • 会话与活动:GET /v1/me/sessions + 吊销单个或全部会话,以及 GET /v1/me/security/events(账户安全历史)。
  • 敏感事件(密码或邮箱变更、验证因子的添加/移除)会发送邮件提醒。
v1.39 · 7 个版本

v1.39

新增 — 可复用的已验证身份(统一的 KYC/KYB)
  • 客户已通过的 KYC/KYB 验证成为其在 CBPay 内的唯一身份:其数据 与文件可在其他产品中复用,无需重复填写或重复上传。指南: 可复用身份。
  • 卡片:你账户的首次发卡会从你已通过的验证中自动填充持卡人 身份与文件 —— 你只需发送 occupation 和 salary_usd。显式提供的 字段仍然优先。
  • 合规报告(KYB):GET /v1/kyb/submissions/{id}/report 下载 该验证的签名合规报告(PDF)。
变更 — Breaking
  • POST /v1/banking/third-parties 现在要求第三方已通过验证 的 verification_id。type 由验证类型推导(KYC ⇒ INDIVIDUAL, KYB ⇒ COMPANY),身份自动填充,已验证的文件会重新交付给银行服务 (documents_synced)。现有第三方继续正常运作。
  • 面向指定人员(企业账户)的 POST /v1/cards 现在要求该人员 已通过 KYC 的 cardholder.verification_id;其身份与文件来自 该验证。
  • 新增错误:422 verification_required、 422 verification_not_approved、422 verification_kind_mismatch、 422 verification_invalid。

v1.38

新增 — 账户汇总(分析)+ 第三方银行用户
  • GET /v1/analytics/summary:一次调用即可获取构建仪表盘所需 的账户全部序列与统计 —— 按周期(日/周/月,含与上一周期的对比)的 总量(流入/流出)、交易数与新用户数,按国家的全局视图,以及 每个服务(payouts、payins、充值、提现、内部转账、swaps、卡片、 banking、KYC/KYB、AML、联系人)各自的区块及其维度(国家、货币、 方式、状态、链、商户)。另有 spending(你在各服务上消耗的费用) 与按美元估值的 balances。新增指南: 你的账户汇总。
  • 第三方银行用户(仅限企业):POST/GET /v1/banking/third-parties(+文件、提交、账户、余额),可将你的 终端客户注册为独立的银行用户,拥有自己的身份/KYC 及以其名义开立 的账户。按账户隔离。
  • 新限制:个人账户最多只能持有 1 个银行账户 (409 banking_account_limit)。

v1.37

变更 — 玻利维亚与委内瑞拉汇率
  • GET /v1/rates 中的 USD→BOB 与 USD→VES 汇率现在反映我们实际用于 处理你付款的市场(此前发布的参考汇率与实际应用值不符)。
  • 若其中某一汇率暂时不可用,该国家会从 GET /v1/rates 中省略,且 该货币的操作返回 422 currency_not_supported,直至恢复 —— 我们 绝不使用错误的汇率报价。建议在以 BOB 或 VES 报价前查询 GET /v1/rates(或订阅汇率 webhook)。

v1.36

新增 — Swap:在你的余额之间兑换
  • 新产品 swaps:在 USDT、USDC、BTC 和 GOLD 之间即时兑换, 资金不离开你的账户 —— 支持任意币对,包括 BTC ↔ GOLD 直接兑换。 POST /v1/swaps(同步,带 idempotency_key)、 GET /v1/swaps/quote(免费指示性报价)以及 GET /v1/swaps (+/{id})查询历史。
  • 报价即你账户的执行汇率:报价 = 到账,无额外费用。BTC/GOLD 采用 实时价格(价格不够新鲜时 swap 会以 503 pricing_unavailable 被拒绝)。
  • 涉及 BTC/GOLD 的兑换与 payout 及卡消费共享单笔与 24 小时交易量 限额(GET /v1/settlement)。新增指南:Swaps。

v1.35

新增 — 联系人与按手机号发送
  • 联系人簿(/v1/contacts):完整 CRUD,支持搜索与收藏。每次 发送(内部转账、payout、加密提现)都会自动将其目标保存为 联系人 —— 自动去重;可通过 "save_contact": false 关闭。
  • 手机通讯录导入(POST /v1/contacts/import,每次最多 1,000 条):将手机号规范化为 E.164,并告知哪些联系人已拥有 CBPay (has_cbpay,仅在你的运营方范围内匹配)。
  • 按手机号转账:POST /v1/transfers 接受 to_phone(仅限手机 号已通过 OTP 验证的账户;存在歧义时返回 422 recipient_ambiguous)以及 to_contact_id。
  • 快捷发送给联系人:payout 支持 beneficiary_contact_id(使用 联系人已保存的收款人信息),加密提现支持 to_contact_id(使用其 已保存的地址)。新增指南:联系人。

v1.34

新增 — KYC/KYB 身份验证(托管向导、OCR 文件与视频活体检测)
  • 强制入驻:每个新账户在运营前必须通过其身份验证(个人 ⇒ KYC, 企业 ⇒ KYB)。在此之前只能入金(payins、加密充值、入账转账) 和读取;其余操作均返回 403 verification_required。通过 POST /v1/me/verification/link 获取你的链接,并用 GET /v1/me/verification 查询状态 —— 通过后你的 kyc_status 会自动更新。现有账户已被豁免并标记为通过。
  • 第三方验证(仅限企业账户):生成托管链接 (POST /v1/kyc/links、POST /v1/kyb/links)或通过 API 提交数据 (POST /v1/{kyc,kyb}/submissions),使用 presign + OCR 上传文件, 并通过活体检测链接完成 liveness 校验。新增固定费用 kyc_verification / kyb_verification,在创建时计费(必须携带 idempotency_key,失败时自动退款)。
  • 7 个新 webhook:kyc/kyb_verification_status_changed、 kyc/kyb_link_completed、kyc/kyb_document_validated、 kyc_liveness_completed。完整指南见 KYC 与 KYB 验证。
变更(BREAKING)— 名单筛查更名为 AML
  • POST /v1/kyc、POST /v1/kyc/rescreen 和 PATCH /v1/kyc/monitoring 已被移除:名单筛查现位于 POST /v1/aml/screenings、 POST /v1/aml/rescreen 和 PATCH /v1/aml/monitoring(语义相同, 沿用相同的 compliance_* 费用)。错误码 no_kyc 变为 no_screening,且筛查不再影响你的 kyc_status。新增 aml_screening_updated webhook 及新的 aml 服务开关(kyc 开关 现在管控身份验证)。指南:AML 筛查。

v1.33

修复 — 多方式国家在不带 method 时的银行目录
  • GET /v1/payouts/banks?country=VE 曾返回 400 要求提供 method, 而 ?country=BO 返回 400 payout_corridor_unsupported。现在 不带 method 的目录会返回该国家所有 payout 方式的银行并集 (按代码去重),与本文档的承诺一致;传入 method 则限定为单一 通道(该参数现已在参考文档中说明)。
v1.32 · 7 个版本

v1.32

新增 — 使用 BTC 与 GOLD 进行卡消费(即时兑换)
  • spending_asset 现在也接受 BTC 和 GOLD:消费按每个事件发生 时刻的有效价格兑换(与 GET /v1/rates 的 settlement 区块中的 价格一致)。
  • 授权:预留等值金额外加一小块缓冲(并非扣费;结算时返还)。 如果执行价格不可用,消费会以 pricing_unavailable 被拒绝 —— 你的余额绝不会以不可信的价格被兑换。
  • 结算:最终金额按扣款时刻的价格重新报价,缓冲的多余部分自动 返还。授权的冲正:原额返还,不做兑换。扣款后的退款/调整: 按事件时刻的价格重新兑换(价格波动由你的余额承担)。
  • BTC/GOLD 消费与 payout 共享账户的波动性资产限额:单笔 (settlement_limit_exceeded)与 24 小时交易量 (settlement_daily_limit_exceeded)。

v1.31

新增 — 选择你的卡从哪个余额消费(USDT 或 USDC)
  • 每张卡现在都有一个消费资产(spending_asset):其消费从账户 的 USDT 或 USDC 余额扣款,与美元 1:1,且无兑换费用。默认 USDT (与历史行为完全一致)。
  • 可在创建卡时设置(POST /v1/cards 中的 spending_asset),或 随时通过 PATCH /v1/cards/{cardID} 修改。修改仅对未来的消费生效: 处理中的授权仍保留(并退回到)其扣款时的资产。
  • 卡交易现在暴露 spend_asset 和 spend_amount(实际扣款的余额与 金额);amount_usd / amount_usdt 仍为美元参考值。单卡限额仍 以美元计量。
  • 新增错误:400 spending_asset_unavailable(BTC/GOLD 不可用于卡 消费),以及当运营方停用该资产时授权被拒的 spending_asset_disabled。

v1.30

变更 — 多资产结算加固
  • 使用 BTC/GOLD 的付款在单笔限额之外,新增按账户滚动 24 小时 交易量上限(422 settlement_daily_limit_exceeded)。它以 volatile_daily_limit_usdt 显示在 GET /v1/settlement 中。
  • 卡片费用(发卡、注销与月费)现在也从你的默认结算余额扣款, 与其他服务一致。卡消费仍以 USDT 结算。

v1.29

新增 — 用任意余额支付 payout 与服务费(多资产结算)
  • payout 与服务费(KYC、钱包创建、banking)现在可以从你的四个 余额中的任意一个(USDT、USDC、BTC、GOLD)扣款。定价仍以 USDT 报价;总额按当时的有效结算价格换算为所选资产。详情见 资金模型。
  • 新增 GET/PUT /v1/settlement:设置你账户的默认余额 (default_settlement_asset)。可在 POST /v1/payouts 及 QR confirm 中通过 settlement_asset 按单笔覆盖。
  • payout 响应现在记录 settlement_asset、settlement_amount (实际扣款的准确金额 —— 也是失败时退款的金额,绝不重新报价) 和 settlement_rate。
  • GET /v1/rates 新增 settlement 区块,包含每个已启用资产的有效 价格;asset_prices 现在携带 source、updated_at 和 settlement_grade(价格是否适合执行)。
  • 新增错误:503 pricing_unavailable(BTC/GOLD 执行价格不可用)、 400 settlement_asset_disabled、400 invalid_settlement_asset 和 422 settlement_limit_exceeded(波动性资产的单笔限额)。

v1.28

变更 — 预告银行转账的短参考码
  • POST /v1/payins 使用 method: "bank_transfer" 时现在返回一个 12 位字母数字短 reference(例如 CBW4N8R2T6P9),取代原来 的 UUID:银行的备注字段有硬性长度限制(巴拉圭/SIPAP 限制为 20 个 字符且不允许特殊字符),UUID 从来放不下。
  • 自动匹配接受新参考码,同时继续接受旧预告中的 UUID —— 现有的 pending payin 不受影响。金额+货币的兜底匹配保持不变。
  • GET /v1/payins 与详情接口在 payin 处于 pending 期间通过 reference 暴露预告参考码。

v1.27

新增 — 巴拉圭收款(预告银行转账)
  • 新收款通道 PY/PYG/bank_transfer:通过 POST /v1/payins 预告存款,你的付款人转账(SIPAP 或收款银行的行内转账)并在备注中 填写 reference,款项按你的 payin_rate 自动以 USDT 入账,与 其他国家一致。指南见 收款。
  • 瓜拉尼不使用小数:请预告精确的整数金额(例如 "596000")。 金额+货币的兜底匹配照常适用。
  • 该通道出现在 GET /v1/payins/methods 中,且 delivery: polling。

v1.26

新增 — 多币种虚拟余额(USDT、USDC、BTC、GOLD)
  • 每个账户现在持有四个独立的虚拟余额:USDT(运营货币)、 USDC、BTC(8 位小数,聪)和 GOLD(足金克数,6 位小数, 托管方背书)。它们永不混合,也绝不自动兑换。详情见 资金模型。
  • GET /v1/balances 始终返回全部四个余额(未使用该货币时为 零),GET /v1/movements 可用 ?asset= 按货币筛选。
  • 多币种内部转账:POST /v1/transfers 接受 asset(默认 USDT,可选 USDC、BTC、GOLD)—— 始终在同一货币的余额 之间进行,无兑换、无费用。
  • 链上 USDC:创建 eth/usdc 钱包,通过以太坊充值与提现 USDC。每笔充值入账到其对应资产的余额。指南见 加密货币。
  • 参考价格:GET /v1/rates 包含 asset_prices,提供各货币的 美元参考价(BTC 按单位、GOLD 按克)—— 仅用于估值,无兑换、无 点差。
  • 多币种对账单:新增 assets 区块,每个非 USDT 余额独立对账 (期初/流入/流出/期末及各自的 balanced 标志),PDF 与 Excel 导出中同样包含。
  • payout、payin、卡片与服务费仍仅针对 USDT 余额运作。
v1.25 · 8 个版本

v1.25

新增 — 社交登录(Google、Apple、Microsoft、Meta)
  • 通过令牌交换实现 Google、Apple、Microsoft 与 Facebook 的免密码 注册与登录:你的前端使用提供方 SDK 获取凭证,并在 POST /v1/auth/oauth 兑换为 CBPay 会话。完整指南见 社交登录。
  • 新增端点:POST /v1/auth/oauth(统一的登录 + 注册)、 GET /v1/auth/oauth/providers(已启用的提供方,公开)、 GET/POST /v1/me/identities 与 DELETE /v1/me/identities/{provider} (在会话中关联/解绑提供方)。
  • 集成 2FA:如果账户在登录时强制 OTP,社交登录同样返回 otp_required + pending_token。
  • 多方式:一个账户可同时拥有密码和多个提供方;仅当提供方返回 已验证邮箱时才会按邮箱自动关联。
  • 目录 中的新错误码:invalid_provider、 provider_not_configured、invalid_credential、email_conflict、 identity_taken、last_login_method。
修复
  • Postman 页面的”集合已更新”标记现在能正确显示距上次更新的时间 (此前显示为空指示器)。

v1.24

新增 — 通过 SMS 与 WhatsApp 的 OTP/2FA
  • 敏感操作的两步验证:你的运营方可以要求在登录、payout、加密 提现、内部转账、banking 操作、卡片明文查看、签发 API key、添加 成员或更换手机号之前输入一次性验证码(通过 SMS 或 WhatsApp)。 完整指南见 安全与 2FA。
  • 新增端点:POST /v1/otp/challenges(发送验证码)、 POST /v1/otp/challenges/{id}/verify(返回用于 X-OTP-Token 请求头的一次性 otp_token)、GET /v1/otp/challenges(+ 详情) 以及 GET /v1/otp/settings(你的生效策略)。
  • 两步登录:在 login 上启用 OTP 后,POST /v1/auth/login 返回 otp_required: true + pending_token,会话在 POST /v1/auth/login/otp 签发。
  • 仅限用户会话:pk_ API key 免除 —— 你的服务器间集成无需 任何改动。
  • 目录 中的新错误码:otp_required、otp_invalid、 phone_required、phone_binding_cooldown、too_many_attempts 等。

v1.23

文档 — 个人 vs 企业与统一指南
  • 新增 个人与企业 页面:两种 账户类型的所有差异(钱包、卡片、成员、KYC/KYB)汇总在一张 表中,并列出每个限制对应的错误。
  • 卡片指南按账户类型重组:“个人账户”与”企业账户”标签页,各自 包含完整流程(首张卡、后续卡,企业还包括公司卡与员工卡的发放) —— 不再需要从零散的注释里拼凑流程。
  • 国家示例回到各自指南中:payout 与 payin 按通道的请求/响应 重新收录在各产品的指南内部(每个产品一页,无需跳转到单独的 参考页)。旧 URL 会自动重定向。
  • Postman 实时新鲜度:Postman 页面现在会显示集合距上次更新的 时长(秒/分钟/天),叠加在日期和版本之上。
  • 编译版 MD 现在包含完整的端点参考及文档版本号。

v1.22

文档 — 站点全面改版
  • 新导航:快速开始 → 概念 → 集成流程 → 产品 → 集成 → 资源, 每页配有图标与面包屑导航。
  • 新页面:环境与测试(本地开发的 webhook 隧道 + 上线检查清单)、已启用的服务、 状态与生命周期(含失败 payout 的 status_code 目录)、 流水与对账,以及带端到端 图示的 集成流程。
  • payout 与 payin 拆分:通用指南 + 国家参考,包含每个通道的 真实请求与响应。
  • 指南扩充:快速开始以 webhook 收尾闭环;个人资料 (PATCH /v1/me)与带角色的成员管理;完整的幂等端点表;webhook 重试计划;链上确认时间;EUR 银行账户;banking 错误加入目录;FAQ 涵盖限额、取消与对账。
  • 卡片:何时发送 cardholder,已澄清。 指南与规格现在说明, 账户的首次发卡会创建并验证持卡人(完整数据 + 必需文件), 而后续发卡无需数据即可复用 —— 此前的最简示例曾让人误以为 永远不需要数据。

v1.21

新增
  • GET /v1/rates 中的 payin_rate:每个国家现在携带你的两个 汇率 —— payout(付款)用 rate,payin(法币收款/入金)用 payin_rate。报价 = 入账,始终如此。
变更
  • payin 定价现在与 payout 一致:payin 的汇率定价体现在你的 payin_rate 中(入账严格按该汇率换算),payin 费用改为每笔 固定金额 —— 不再有单独的百分比。每笔 payin 的 fx_rate 字段 记录所应用的汇率。参见 费用 与 收款指南。
  • 入账换算向下取整到微 USDT(扣款仍向上取整),差额最多 1 微 USDT。
文档
  • KYC/KYB:完整的身份字段参考。 customer 对象一直接受比示例 更多的可选字段(出生日期、国籍、带签发国的证件、别名、居住地、 公司注册数据……),提供它们能让筛查更精确。 KYC 指南 现在记录了每个字段,附完整身份示例 与去重规则。

v1.20

新增
  • 卡片目录:GET /v1/cards/catalog/occupations 与 GET /v1/cards/catalog/business-activities(可用 ?q= 搜索), 用于填充选择器。指定个人时,occupation 必须是目录中的代码; 企业则同样要求 kind_of_business。目录之外的值会在到达发卡方 之前被 400 invalid_occupation / 400 invalid_kind_of_business 拒绝。参见 卡片指南。

v1.19

新增
  • GET /v1/services:你账户已启用服务的生效映射(payouts、 payins、transfers、crypto、banking、kyc、cards)—— 可用于决定 UI 中展示的内容。服务按你的商业协议逐账户启用;某项 服务关闭时,其操作返回新的 403 service_disabled 错误(读取与 在途资金绝不会被阻断)。

v1.18

新增
  • 虚拟卡与实体卡,直接从账户的 USDT 余额消费,无需预充值: 每笔消费都会针对可用余额与卡片限额进行实时授权。个人:1 张虚拟 卡 + 1 张实体卡;企业:不限量,可为公司本身或指定人员(如员工) 发放。新增端点 POST/GET /v1/cards、GET/PATCH /v1/cards/{id} (限额与冻结/解冻)、POST /v1/cards/{id}/activate|cancel|reveal 以及 GET /v1/cards/{id}/transactions。参见 卡片指南。
  • 新增计费服务(固定、可配置、可为 0): card_creation_virtual、card_creation_physical、card_monthly (余额不足时卡片被冻结 —— 不产生欠款)以及 card_cancellation。
  • 新增 webhook card_transaction(已授权/已撤销/已调整)与 card_status_changed(状态变化,包括自动冻结)。
  • 新增总账流水类型:card_debit、card_refund、card_fee、 card_fee_refund。
v1.17 · 16 个版本

v1.17

新增
  • 智利:托管支付页(method: "fintoc"),位于 POST /v1/payins。响应携带一个 payment_url,付款人打开后即可 从任意智利银行或钱包(Banco Estado、Santander、Mach、Tenpo、 Mercado Pago 等)转账;存款会被自动检测、校验并以 USDT 入账, 并发送常规的 payin_credited webhook。支持可选的 idempotency_key:重试会返回同一笔 payin 和同一个 URL,不会 开启第二个支付会话。参见 收款指南。

v1.16

新增
  • 所有列表端点均支持 from/to 日期筛选:/v1/movements、 /v1/payouts、/v1/payins 与 /v1/crypto/transactions 现在在 常规分页(page、page_size 上限 200)之外接受 from/to (YYYY-MM-DD,UTC,含端点日期)。无效日期返回 400 invalid_range。
  • 查询内部转账:GET /v1/transfers(带分页与日期筛选的列表) 与 GET /v1/transfers/{id} —— 此前只能创建。
  • 列出 webhook 订阅:GET /v1/webhooks/subscriptions。
  • 主动收款的幂等性:POST /v1/payins/collect 现在要求 idempotency_key(它执行真实扣款;重试绝不会向付款人重复扣款)。 钱包创建(重试不重复收费)与管理员调整也做了同样加固。
  • members、crypto/wallets、deposit-accounts 及(管理端) orgs 增加了统一分页。
  • 账户对账单(GET /v1/reports/statement):将期间内的所有 流水 —— payout、payin、加密、内部转账与费用 —— 汇总为一份可审计 的文档,并进行精确的会计对账 (opening + inflows − outflows = closing,与总账核对)。同一 端点提供三种格式:面向网页的 JSON、带 CBPay 品牌的 PDF, 以及带数值单元格、筛选器和流水表、面向审计师的多工作表 Excel (format=json|pdf|xlsx,lang=es|en)。组织管理员可以生成其 任意账户的对账单。参见 指南。

v1.15

改进
  • 文档全站的可视化流程图:介绍页的资金地图(进出 USDT 余额的 一切)、带扣款/冻结/退款的 payout 生命周期、两步 QR 流程、汇入 入账的四种 payin 模式、加密充值与提现、完整的 banking 生命周期、 KYC 状态、webhook 投递与重试,以及幂等决策规则(“我该用哪个键 重试?”)。

v1.14

变更
  • 新基础 URL:https://api.qbank.cl/platform(此前为 exchange.qbank.cl/platform)。旧域名作为别名继续可用,因此 现有集成不会中断 —— 但新集成请一律使用 api.qbank.cl。全部 文档、规格与 Postman 集合均已指向新 URL。

v1.13

新增
  • Banking:为你的账户开立真实银行账户 —— 通过国际银行网络 (视货币而定,SEPA、SWIFT、ACH)接收、持有和汇出资金。 /v1/banking/* 下新增 14 个端点:
    • 银行档案:创建、查询、上传文件并提交验证。
    • 账户:按货币开立、列出并查询实时余额。
    • 收款人:登记、列出并关联目标账户。
    • 付款:报价(prepare,免费)并以幂等方式执行 TRANSFER/WITHDRAW。
  • 新增 webhook:banking_customer_status_changed 与 banking_operation_status_changed。
  • 新增费用(固定、可配置、操作失败时退款):banking_customer、 banking_account、banking_operation —— 每个响应中的 banking_fee 字段显示实际收取的金额。
  • 完整的 Banking 指南,含端到端流程及每种 操作的示例。

v1.12

改进
  • API 参考完全本地化:以西班牙语浏览文档时,标题、描述、字段 与侧边栏分组现在均已翻译(此前只有界面框架会切换语言)。
  • payout 指南重组:巴西 PIX 现在仅出现在”按国家的示例”下(重复的 章节已删除);QR 因为是不同的流程(扫码 + 确认),仍作为唯一 单独的流程章节保留。
  • Webhooks:5 个事件各自的示例负载。
  • 快速开始:个人与企业两种注册示例。
  • Postman 集合扩充到 53 个请求:具有多种用例的端点现在按用例 各提供一个请求(每个国家和方式一个 payout、按模式的 payin、 个人/企业 KYC 等),每个都带有可直接发送的请求体。
  • 收款指南按国家重构,与 payout 对齐:通道矩阵展示各国模式, 外加智利 / 秘鲁 / 墨西哥 / 委内瑞拉 / 玻利维亚 / 巴西标签页及其 完整示例。
  • 新增 FAQ 页面:沙盒、初始入金、payout 前成本 估算、汇率保证、到账时间、安全重试、无参考码的存款等 —— 上手 第一天的问题都能在文档内找到答案。
  • 快速开始以关键信息表开篇(基础 URL、认证请求头、slug、金额 格式、环境),并附 GET /v1/rates 响应示例与成本估算公式。
  • payout:方式与银行目录的响应示例,外加一张标注对余额影响的状态 表。payin:目录响应示例及 delivery 的含义。

v1.11

改进
  • 文档全站按用例提供完整示例:
    • payout:每个国家和方式各一个示例,含其真实的 beneficiary 与 响应(智利、秘鲁 CCI + Yape、墨西哥 CLABE + 借记卡、委内瑞拉 Pago Móvil + 银行转账、玻利维亚 ACH、巴西 PIX、巴拉圭)。
    • payin:玻利维亚与巴西 QR 并排展示,主动收款 c2p 与 debito_inmediato 及其 OTP 响应,专属存款账户。
    • KYC/KYB:个人、企业与最简自动填充请求,附筛查、重新筛查与 监控(启用/停用)的响应。
    • 内部转账:按邮箱、按 account_id、企业→个人(发薪)与幂等 重放。
    • 加密:个人 vs 企业的钱包创建,以及 wallet_limit_reached 错误。
    • API 参考:每个端点均可选择命名示例(10 个 payout 通道、3 种 payin 模式、个人/企业 KYC……)。

v1.10

新增
  • 巴西(BRL)PIX 在 payout 与 payin 中的文档:
    • 通过 POST /v1/payouts 按密钥(CPF/CNPJ、手机、邮箱或 evp 随机密钥)进行 pix payout。
    • 通过 qr/scan + qr/confirm 流程(country: "BR")向 PIX QR (静态或 “copia e cola”)付款。
    • 通过 POST /v1/payins(method: "qr",country: "BR")使用 动态 PIX QR 收款,携带二维码图片与 “copia e cola” 代码。
    • 通过预告银行转账收款(method: "bank_transfer")。
通道的启用是渐进的;目录(GET /v1/payouts/methods、 GET /v1/payins/methods)反映任一时刻的可用性。

v1.9

新增
  • 所有收款(payin)方式现已通过 API 提供:
    • POST /v1/payins 现在接受 method:qr(QR 收款,同以往)或 bank_transfer(预告一笔入账存款,并获取转账必须携带的参考码 以便自动入账)。
    • POST /v1/payins/collect —— 在支持的通道(如委内瑞拉 c2p / debito_inmediato)进行主动拉取收款,同步入账;当方式要求 预先 OTP 时使用 POST /v1/payins/collect/otp。
    • POST /v1/payins/deposit-accounts —— 绑定到你账户的固定专属 存款账户(如墨西哥 CLABE):汇入该账户的一切都会自动入账。 使用 GET /v1/payins/deposit-accounts 列出它们。
  • 指南中提供了 payout 的完整通道与方式矩阵(智利、秘鲁含 yape、 墨西哥 SPEI、委内瑞拉含 pago_movil、玻利维亚含 qr、巴拉圭)。
  • 委内瑞拉(VES)加入 GET /v1/rates 报价。

v1.8

新增
  • 玻利维亚 QR payout:分两步支付任意玻利维亚收款二维码 —— POST /v1/payouts/qr/scan(免费,返回收款人数据)与 POST /v1/payouts/qr/confirm(按常规 payout 收费:你的汇率 + 固定费用,同步返回最终结果,失败时自动退款)。
  • 玻利维亚(BOB)加入 GET /v1/rates 报价。

v1.7

新增
  • 新增 Postman 页面:官方可下载集合,包含全部 25 个端点、示例请求体与预配置的认证。每个 API 版本都会重新生成。
变更
  • 费用页面与 payout 示例现已反映当前的定价模型:payout 按你的 汇率 + 每笔固定费用收取(无单独百分比)。派发等值 100 USDT 会扣除 100 USDT 加上你配置的固定费用。

v1.6

改进
  • GET /v1/rates 现在按国家返回你账户专属的汇率:与你的操作 实际执行的汇率相同(local_amount / rate = USDT),报价与扣款 之间没有差异。

v1.5

移除(Breaking)
  • GET /v1/crypto/deposit-address(v1.4 中弃用的别名)已被永久 移除。请使用 POST /v1/crypto/wallets 创建钱包,并用 GET /v1/crypto/wallets 列出它们。

v1.4

新增
  • 企业多钱包:企业账户现在可以每个网络创建不限量的钱包 (个人仍为每个网络 1 个)。
  • 新增端点:POST /v1/crypto/wallets(创建钱包,可选 label 以便区分)与 GET /v1/crypto/wallets(列出我的钱包)。每次创建 在配置了固定费用 wallet_creation 时计费。
  • 当个人尝试在同一网络创建第二个钱包时,新增 422 wallet_limit_reached 错误。
  • 钱包响应现在包含 wallet_id 和 label。
变更
  • 加密指南重组为:创建钱包、查看我的钱包、充值、转账与流水。
  • GET /v1/crypto/deposit-address 作为弃用的旧别名保留:请改用 钱包端点。
修复
  • 两种语言的文案与翻译润色;流水表现在包含 wallet_creation_fee 与 wallet_creation_refund 条目类型。

v1.3

改进
  • 专业级 API 参考:全部 25 个端点现在为每种情况(成功、幂等 重放、以及每个可能的错误及其真实响应体)提供请求与响应示例, 可直接在文档 playground 中试用。
  • 5 个 webhook 现已在 API 参考内部文档化(标准 OpenAPI Webhooks 章节),每个事件均含 schema 与示例负载。
  • 方式与银行目录以系统的真实响应结构文档化。
  • GET /healthz 端点已文档化(服务状态)。
  • 加密指南新增 “钱包余额与活动”:如何查询余额、带 tx_id 的 链上活动,以及账务历史。
  • 品牌化文案:整套文档现在以 CBPay 的口吻表达(此前使用”你的 运营方”或”该组织”之类的泛称)。
  • 身份验证在全站文档中统一命名为 KYC/KYB(个人为 KYC,企业为 KYB)。
  • 内部转账:明确记录其可在任意组合的账户之间进行(个人↔个人、 个人↔企业、企业↔企业),且始终免费。

v1.2

新增
  • 新增 wallet_creation 费用服务:在每条链上首次创建充值地址可能 收取由 CBPay 配置的固定费用(0 = 免费,默认值)。 GET /v1/crypto/deposit-address 响应现在包含 creation_fee, 流水历史新增 wallet_creation_fee 与 wallet_creation_refund 条目类型。获取已存在的地址始终免费;创建失败时费用自动退还。
  • 新增 更新日志 页面(本页),记录 API 与文档的版本历史。
变更
  • 加密指南现在有一个明确的 “创建你的钱包” 章节,说明按网络 创建(首次调用返回 201 并附 creation_fee,之后为免费的 200), API 参考将该端点更名为”创建或获取我的钱包(充值地址)“。
v1.1 · 2 个版本

v1.1

新增
  • 按操作计费的合规费用:compliance_person、compliance_company、 compliance_rescreen 与 compliance_monitoring(每次调用的固定 费用;0 = 免费)。KYC 响应现在包含 compliance_service 与 compliance_fee。
  • 新增 POST /v1/kyc/rescreen 与 PATCH /v1/kyc/monitoring 端点 (停用监控免费)。两者都要求已有 KYC(409 no_kyc)。
变更
  • CBPay 官方品牌形象已应用于整套文档。
  • 管理相关文档已迁移至 CBPay 内部门户;本站现在仅涵盖账户 API。

v1.0

首次发布
  • CBPay 公开 API 文档,双语(西班牙语与英语):认证(JWT 会话与 pk_ API key)、USDT 资金模型、费用、幂等性、多国法币 payout、 payin、内部转账、加密(链上入金与提现)、KYC、签名 webhook 及 完整的错误目录。
  • 基于 OpenAPI 3.1 生成的交互式 API 参考。
最后修改于 2026年10月17日