> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thedecard.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 授权与清算全场景

> 集中说明授权与清算的 13 类业务场景，包括消费、撤销、退款、增量授权、多笔清算、强制清算和授权释放。

## 业务概览

无论您的持卡人是在线上商户付款、在 ATM 取现，还是发起退货退款，DCS 都会把每一笔资金变动拆成两个清晰的阶段交付给您：**授权阶段**先冻结或解冻资金，**清算阶段**再完成真实的扣款或退款。本页把所有授权与清算的组合一次列全，帮助您在接入时把每种业务情况都对得上账。DCS 是持牌发卡机构、自有 BIN Sponsor，资金的冻结与扣除均由 DCS 在卡组织侧完成，授权决策由接入机构掌握。

> 阅读本页前，建议先理解三个实体的关系：**授权（Authorisation）** 记录冻结/解冻决策，**Outstanding** 跟踪冻结金额的累加与扣减，**交易流水（Transaction）** 记录实际扣款/退款结果。详见 [授权](./authorization) 与 [交易流水](./transaction)。

***

## 核心概念：Auth、Outstanding 与 Transaction

<Frame>
  <img className="block dark:hidden" src="https://mintcdn.com/dcs-0bf7a937/oUoeUKtwWWK2o-Li/imgs/diagrams/pa-aot-model-light.svg?fit=max&auto=format&n=oUoeUKtwWWK2o-Li&q=85&s=d218e60e6a29ca41638f8451c6e4be74" alt="Auth / Outstanding / Transaction 三者关系" width="734" height="288" data-path="imgs/diagrams/pa-aot-model-light.svg" />

  <img className="hidden dark:block" src="https://mintcdn.com/dcs-0bf7a937/oUoeUKtwWWK2o-Li/imgs/diagrams/pa-aot-model-dark.svg?fit=max&auto=format&n=oUoeUKtwWWK2o-Li&q=85&s=26940f616f72fa660bab8a7af786143f" alt="Auth / Outstanding / Transaction 三者关系" width="734" height="288" data-path="imgs/diagrams/pa-aot-model-dark.svg" />
</Frame>

* 一笔授权批准后，DCS 冻结对应金额，并生成（或复用）一个 **Outstanding**，`amount` 记录当前累计冻结金额。
* 增量授权、撤销等后续授权通过 `originalAuthId` 找到首笔授权的 `outsId`，在**同一个 Outstanding** 上累加或扣减。
* 清算到账时，DCS 扣减 Outstanding 直至归零，并生成交易流水。清算金额与冻结金额不一致时，DCS 会自动补建一笔 **FORCE\_AUTH** 授权来补足或释放差额。

> **关键字段**：`authId`（授权 ID）、`outsId`（账单/Outstanding ID，串联授权与清算）、`originalAuthId`（关联原始授权）、`direction`（`OUTGOING` 冻结 / `INCOMING` 解冻）、`authType`（授权类型）。完整字段见 [授权数据结构](./authorization)。

### 授权类型（authType）

| 枚举值                   | 含义                                          | 谁触发     |
| --------------------- | ------------------------------------------- | ------- |
| `NORMAL`              | 普通授权，由卡组织实时回调产生，涵盖消费、增量、撤销、退款、提现、查询         | 卡组织实时   |
| `FORCE_AUTH`          | 强制授权，DCS 自动补建：清算无对应授权（离线交易）、或清算与冻结金额不一致需补差额 | DCS 自动  |
| `EXPIRED_RELEASE`     | 到期释放，授权超时未清算时卡组织通过结算文件通知释放冻结                | 卡组织结算文件 |
| `STATUS_DIFF_RELEASE` | 状态差异释放，卡组织超时拒绝但系统侧已批准的对账修正                  | DCS 对账  |

***

## 场景总览

下表 13 个场景覆盖了授权与清算的全部组合。「Outstanding 最终」一列均为 0，表示资金生命周期闭合。

| #  | 场景                 | 授权阶段（冻结/解冻）     | 清算阶段（扣款/退款）                     | Outstanding 最终 |
| -- | ------------------ | --------------- | ------------------------------- | -------------: |
| 1  | 普通授权 → 普通清算        | 冻结 100          | 扣款 100                          |              0 |
| 2  | 普通授权 → 增量授权 → 普通清算 | 冻结 100 + 追加 20  | 扣款 120                          |              0 |
| 3  | 普通授权 → 部分撤销 → 普通清算 | 冻结 100 − 解冻 30  | 扣款 70                           |              0 |
| 4  | 普通授权 → 全额撤销        | 冻结 100 − 解冻 100 | 无                               |              0 |
| 5  | 普通授权 → 超额清算        | 冻结 100          | 扣款 150（差额 50 由 FORCE\_AUTH 补冻结） |              0 |
| 6  | 普通授权 → 少额清算        | 冻结 100          | 扣款 80（多余 20 由 FORCE\_AUTH 解冻）   |              0 |
| 7  | 普通授权 → 部分清算 → 最终清算 | 冻结 100          | 扣款 60 + 扣款 40                   |              0 |
| 8  | 强制清算（无授权）          | 无冻结             | 直接扣款 100                        |              0 |
| 9  | 强制退款（无授权）          | 无冻结             | 直接退款 50                         |              0 |
| 10 | 查询授权（Inquiry）      | 金额=0，不冻结        | 无                               |              0 |
| 11 | 授权过期释放             | 冻结 100 → 解冻 100 | 无                               |              0 |
| 12 | 授权超时差异             | 冻结 100 → 回滚 100 | 无                               |              0 |
| 13 | 提现（清算 + 提现手续费）     | 冻结 110 → 解冻 10  | 扣款 100 + 手续费 10                 |              0 |

> 阅读约定：每条「动作时序」用 `direction / authType / outsId(amount变化)` 标注。`A` = 批准（approveFlag=A），`D` = 拒绝。

***

## 场景详情

### 场景一：普通授权 → 普通清算

最基本的场景：一笔授权冻结，一笔清算扣款，金额完全匹配。

1. 授权 — OUTGOING 冻结 100 USD — `authId1`（NORMAL, A）— `outsId1`（amount=100）
2. 清算 — OUTGOING 扣款 100 USD — `transactionId1` — `outsId1`（amount=100→0）

| 步骤   | authorisation                     | outstanding           | transaction                           |
| ---- | --------------------------------- | --------------------- | ------------------------------------- |
| 授权批准 | `authId1`: OUTGOING, A, `outsId1` | `outsId1`: amount=100 | —                                     |
| 清算完成 | —                                 | `outsId1`: amount=0   | `transactionId1`: OUTGOING, `outsId1` |

### 场景二：普通授权 → 增量授权 → 普通清算

商户追加冻结（如酒店加收小费），多笔授权共享同一个 Outstanding。

1. 授权 — OUTGOING 冻结 100 USD — `authId1`（NORMAL）— `outsId1`（amount=100）
2. 授权 — OUTGOING 冻结 20 USD — `authId2`（NORMAL）— `outsId1`（amount=100→120）
3. 清算 — OUTGOING 扣款 120 USD — `transactionId1` — `outsId1`（amount=120→0）

增量授权通过 `originalAuthId` 找到首笔授权的 `outsId`，在同一个 Outstanding 上累加。

### 场景三：普通授权 → 部分撤销 → 普通清算

持卡人部分退货，商户发起部分撤销后按剩余金额清算。

1. 授权 — OUTGOING 冻结 100 USD — `authId1`（NORMAL）— `outsId1`（amount=100）
2. 授权 — INCOMING 解冻 30 USD — `authId2`（NORMAL）— `outsId1`（amount=100→70）
3. 清算 — OUTGOING 扣款 70 USD — `transactionId1` — `outsId1`（amount=70→0）

### 场景四：普通授权 → 全额撤销

持卡人取消交易，商户发起全额撤销，无后续清算。

1. 授权 — OUTGOING 冻结 100 USD — `authId1`（NORMAL）— `outsId1`（amount=100）
2. 授权 — INCOMING 解冻 100 USD — `authId2`（NORMAL）— `outsId1`（amount=100→0）

Outstanding 归零后无需清算。

### 场景五：普通授权 → 超额清算

清算金额大于冻结金额（如汇率波动、附加费用），DCS 在同一事务内自动补建 OUTGOING FORCE\_AUTH 补足差额。

1. 授权 — OUTGOING 冻结 100 USD — `authId1`（NORMAL）— `outsId1`（amount=100）
2. 清算处理（同一事务内）：
   1. 授权 — OUTGOING 冻结 50 USD — `authId2`（FORCE\_AUTH）— `outsId1`（amount=100→150）
   2. 清算 — OUTGOING 扣款 150 USD — `transactionId1` — `outsId1`（amount=150→0）

### 场景六：普通授权 → 少额清算

清算金额小于冻结金额，DCS 在同一事务内自动补建 INCOMING FORCE\_AUTH 解冻多余资金。

1. 授权 — OUTGOING 冻结 100 USD — `authId1`（NORMAL）— `outsId1`（amount=100）
2. 清算处理（同一事务内）：
   1. 授权 — INCOMING 解冻 20 USD — `authId2`（FORCE\_AUTH）— `outsId1`（amount=100→80）
   2. 清算 — OUTGOING 扣款 80 USD — `transactionId1` — `outsId1`（amount=80→0）

### 场景七：普通授权 → 部分清算 → 最终清算

多笔清算场景，由交易流水的 `multiClearInd` 字段标识：非最后一笔只扣减 Outstanding，最后一笔才检查差额。

1. 授权 — OUTGOING 冻结 100 USD — `authId1`（NORMAL）— `outsId1`（amount=100）
2. 清算 — OUTGOING 扣款 60 USD — `transactionId1`（multiClearInd=P）— `outsId1`（amount=100→40）
3. 清算 — OUTGOING 扣款 40 USD — `transactionId2`（multiClearInd=F）— `outsId1`（amount=40→0）

如果最后一笔清算后仍有差额，则按场景五/六的逻辑补建 FORCE\_AUTH。

> `multiClearInd` 取值：`O` 普通单笔清算 / `P` 多笔清算非最后一笔 / `F` 多笔清算完成。详见 [清算场景](./capture-scenarios)。

### 场景八：强制清算（无授权）

线下或离线交易，清算时找不到对应授权，DCS 在同一事务内自动补建完整的 Auth + Outstanding。

1. 清算处理（同一事务内）：
   1. 授权 — OUTGOING 冻结 100 USD — `authId1`（FORCE\_AUTH, A）— `outsId1`（amount=0）
   2. 清算 — OUTGOING 扣款 100 USD — `transactionId1` — `outsId1`（amount=0）

Outstanding `amount` 直接设为 0，FORCE\_AUTH 自动批准，三者在同一事务内创建。

### 场景九：强制退款（无授权）

退款清算时找不到对应授权，DCS 新建 Outstanding 做数据关联。

1. 清算处理（同一事务内）：
   1. 清算 — INCOMING 退款 50 USD — `transactionId1` — `outsId1`（amount=0）

与强制清算不同，INCOMING 方向不补建 Auth，只建 Outstanding 做数据关联。

### 场景十：查询授权

金额为 0 的问询式授权，仅验证卡是否有效，不冻结资金。

1. 授权 — OUTGOING 冻结 0 USD — `authId1`（NORMAL）— `outsId1`（amount=0）

仍会创建 Outstanding（amount=0），但不冻结任何资金。接入机构仍会收到授权 Webhook（`transactionType=Q`）。

### 场景十一：授权过期释放

授权超过有效期未清算，卡组织通过结算文件通知释放冻结资金。

1. 授权 — OUTGOING 冻结 100 USD — `authId1`（NORMAL）— `outsId1`（amount=100）
2. （超过有效期，未收到清算）
3. 授权 — INCOMING 解冻 100 USD — `authId2`（EXPIRED\_RELEASE）— `outsId1`（amount=100→0）

> 释放金额必须与 Outstanding 金额**完全匹配且币种一致**才会释放；不匹配则触发 DCS 内部告警、不做处理。

### 场景十二：授权超时差异

卡组织因超时拒绝了授权，但 DCS 侧可能已批准，需要对账修正。

1. 授权 — OUTGOING 冻结 100 USD — `authId1`（NORMAL）— `outsId1`（amount=100）
2. （卡组织超时拒绝，DCS 侧已批准，状态不一致）
3. 授权 — INCOMING 回滚 100 USD — `authId2`（STATUS\_DIFF\_RELEASE）— `outsId1`（amount→回滚）

处理逻辑：

* DCS 侧已批准（approveFlag=A），卡组织超时拒绝 → 创建反向授权（STATUS\_DIFF\_RELEASE, INCOMING），Outstanding 回滚。
* DCS 侧已拒绝（approveFlag=D）→ 状态一致，不处理。
* 未找到关联授权 → 创建记录（STATUS\_DIFF\_RELEASE, approveFlag=D），仅做记录，不影响资金。

### 场景十三：提现（普通清算 + 提现手续费）

授权阶段冻结总金额（本金 + 手续费），清算时先解冻手续费部分（少额清算逻辑），再扣款本金；手续费通过独立的 FORCE\_AUTH + 清算流程扣款。

1. 授权 — OUTGOING 冻结 110 USD — `authId1`（NORMAL）— `outsId1`（amount=110）
2. 本金清算处理（同一事务内）：
   1. 授权 — INCOMING 解冻 10 USD — `authId2`（FORCE\_AUTH）— `outsId1`（amount=110→100）
   2. 清算 — OUTGOING 扣款 100 USD — `transactionId1`（category=CASH）— `outsId1`（amount=100→0）
3. 手续费强制记账清算处理（同一事务内）：
   1. 授权 — OUTGOING 冻结 10 USD — `authId3`（FORCE\_AUTH）— `outsId2`（amount=10）
   2. 清算 — OUTGOING 扣款 10 USD — `transactionId2`（category=CASH\_FEES）— `outsId2`（amount=10→0）

处理逻辑：

* 授权冻结 110 USD（本金 100 + 手续费 10），`outsId1` 记录总冻结金额。
* 清算本金时，DCS 发现清算金额（100）\< Outstanding 金额（110），按少额清算逻辑先补建 INCOMING FORCE\_AUTH 解冻差额 10，再扣款 100。
* 手续费独立走强制记账流程：新建 `outsId2`，FORCE\_AUTH 冻结 10 后立即清算扣款 10。

> **如何区分提现本金与手续费？** 通过交易流水的 `category` 字段判断。
>
> 交易流水的 `category` 取值以[交易分类数据字典](../reports/field-dictionary)为准：提现本金为 `CASH`（取现），提现手续费为 `CASH_FEES`（取现手续费）。

***

## 跟一个 case 走一遍：酒店预授权到入账

把场景三（部分撤销）放进真实时间线，看您在每个触点收到什么、做什么、账上如何勾稽。案例：持卡人预订三晚酒店，预授权 100 USD；入住后取消一晚，酒店撤销 30 USD；离店后酒店按 70 USD 请款。

| 时间    | 事件            | 您收到什么                                                                           | 您做什么                                     | Outstanding `outsId1` |
| ----- | ------------- | ------------------------------------------------------------------------------- | ---------------------------------------- | --------------------: |
| Day 1 | 酒店预授权 100 USD | `authUrl` 实时请求：`authId1`、`OUTGOING`、`NORMAL`、amount=100                         | 2.5 秒内决策，返回 `00`                         |               0 → 100 |
| Day 1 | DCS 冻结并回执     | `AUTHORISATION_RESULT`：`authId1`、`approveFlag=A`                                | 记账：该用户冻结 100                             |                   100 |
| Day 3 | 酒店撤销一晚 30 USD | `authUrl` 实时请求：`authId2`、`INCOMING`、`NORMAL`、amount=30、`originalAuthId=authId1` | 决策返回 `00`                                |              100 → 70 |
| Day 3 | DCS 解冻并回执     | `AUTHORISATION_RESULT`：`authId2`、`approveFlag=A`                                | 记账：冻结降为 70                               |                    70 |
| Day 4 | 卡组织清算 70 USD  | （清算不推实时通知）                                                                      | —                                        |                70 → 0 |
| Day 5 | 对账文件生成        | 授权报告两行（`authId1`/`authId2`，同一 `outsId1`）+ 交易报告一行（`transactionId1`，扣款 70）        | 按 `outsId1` 勾稽：冻结 100 − 解冻 30 = 清算 70，闭环 |                     0 |

三条对账要点：

* **`outsId1` 是这条时间线的主键**：两笔授权与一笔清算都挂在同一个 Outstanding 上，对账时按 `outsId` 分组即可把授权与清算对上，不需要自己猜关联。
* **撤销也要您决策**：`INCOMING` 解冻同样经 `authUrl` 转发，建议直接返回 `00` 放行；仅当解冻金额大于当前已冻结金额等异常场景时才有拒绝的业务理由。
* **清算只出现在对账文件里**：请款（Day 4）不产生实时回调，您对清算结果的感知统一来自每日交易报告——这正是把日终对账作为资金真相源的原因。

若 Day 4 酒店请款不是 70 而是 75 或 60，DCS 会按上文场景五/六自动补建 `FORCE_AUTH` 补足或释放差额，您会在授权报告中看到这笔系统补建记录，无需实时介入。

***

## 接入机构如何参与

| 环节              | 谁做       | 说明                                        |
| --------------- | -------- | ----------------------------------------- |
| 授权决策（A/D）       | **接入机构** | DCS 通过授权 Webhook 转发请求，接入机构按自身额度/风控返回批准或拒绝 |
| 资金冻结 / 解冻       | **DCS**  | 接入机构返回批准后，DCS 在卡组织侧执行冻结，并维护 Outstanding   |
| FORCE\_AUTH 补差额 | **DCS**  | 清算与冻结不一致时自动补建，接入机构无需介入                    |
| 清算扣款 / 退款       | **DCS**  | 卡组织清算到账后由 DCS 生成交易流水并扣减 Outstanding       |
| 对账              | **接入机构** | 通过每日授权报告 + 交易流水报告核对                       |

授权 Webhook 的请求/响应数据结构、RSA 双向加签与 `responseCode`（`00` 同意 / `01` 资金不足 / `11` 交易不允许 / `21` 无响应）见 [Webhook 事件与结构](../webhooks/events-and-schema)。

***

## 下一步

* 想验证以上场景？用沙盒模拟一笔授权：[在沙盒中模拟交易](../sandbox/simulating-transactions)（`POST /open-api/simulation/v1/fund-auth`，支持 `EXPEND` 消费 / `REFUND` 退货 / `REVERSAL` 冲正）。
* 深入清算的多笔/超额细节：[清算场景](./capture-scenarios)。
* 处理被拒授权：[授权拒绝与错误码](./decline-codes)。
