Appearance
异常订单进入财务专项规则
本文是
README.md所述卖家财务结算中心的异常订单专项权威规则。 跨境费用证据与计算公式继续遵循CROSS_BORDER_SETTLEMENT_REQUIREMENTS.md; 数据表与约束遵循DATA_MODEL.md。发生冲突时,异常订单的终态、finance_ready_at、金额方向和自动交接时点以本文为准。
1. 适用范围与共同规则
本文首版只覆盖 fulfillment.type=dropship 的卖家订单:
- 未发货取消;
- 已发货取消;
- 物流丢失并由平台核准赔付;
- 正常完成后、成功交接财务前完成退款。
订单域负责形成异常终态并写入 finance_ready_at,财务不得根据页面展示状态、 updated_at、客服备注或 metadata 推断终态。finance_ready_at 非空表示订单可以创建财务 记录,不代表全部后续物流费用已经最终完成。
交接载荷至少包含 tenant_id、order_id、finance_ready_at、terminal_type、 source_version、最终末端物流责任人及其来源版本、商品收入、赔付收入、物流费、平台费、 税费、币种及各金额证据键。 初次交接幂等键为 (order_id, finance_ready_at, source_version)。 初次交接成功即冻结订单终态、责任人和金额快照;同一订单不存在第二次初始交接,也不建立 “迟到订单”概念。四类异常终态一旦形成不得互相转换,后续纠正只能追加调整或冲正。
异常终态固定为:
cancelled_unshipped:未发货取消;cancelled_shipped:已发货取消;logistics_claimed:物流丢失赔付已核准;refunded:财务交接前退款完成。
首版本轮只定义契约,不修改订单表、不运行订单扫描、事件消费、历史回填、迁移或真实 财务交接。
2. 未发货取消
订单取消完成后自动进入财务:
terminal_type = cancelled_unshipped;finance_ready_at = cancelled_at;- 商品收入、赔付收入、物流费、平台费和税费均为
0.00。
“未发货”必须由订单域的正式履约事实证明,不能只看页面文案。预估运费、预估税费、 未生效费用通知或未创建的物流段不得产生扣减。重复取消通知不得重复创建财务记录。
3. 已发货取消
订单取消完成后立即进入财务,不等待全部物流段结束:
terminal_type = cancelled_shipped;finance_ready_at = cancelled_at;- 商品收入及对应商品平台费为
0.00; - 交接时只计入已经存在、确认生效且未撤销的物流和税务事实。
3.1 物流运行阶段
- 已发到集货仓,但集货仓尚未出库并成功拦截:跨境物流费为
0.00;其他已经生效的 物流段仍按正式事实处理。 - 已进入跨境运输、尚未进入末端且末端成功拦截:计入实际跨境费用,末端费用为
0.00。 - 已进入末端配送:跨境和末端按各自已经生效的真实物流段分别计费。
- 退回、再次派送或其他后续物流段:正式费用事实成立后,按交接时冻结的最终责任人扣减。
- 拦截成功只免除尚未发生的后续物流段,不能撤销已经真实发生且仍有效的费用。
3.2 后到物流事实
初次财务记录和账单使用交接时已有事实。后续新增、修正或撤销的物流费用自动生成幂等 调整,不修改 finance_ready_at:
- 原账单未确认:追加调整绑定原账单并重新执行账单金额恒等校验,不修改初始订单快照;
- 原账单已确认:调整进入之后最早的未确认结算期,并关联原订单、原账单、物流段和费用来源;
- 初始订单快照和已确认账单的冻结金额均不得原地覆盖。
物流调整的稳定来源键至少包含 provider + fulfillment + segment + fee_type + source_version。 同一费用版本只允许入账一次;撤销或金额修正使用追加式反向调整和新版本。
4. 物流丢失赔付
Admin 异常订单未来提供“赔付”操作。平台核准赔付时必须在同一业务事务中:
- 自动取消订单;
- 将订单终态设置为
logistics_claimed; - 记录正式赔付审批事实;
- 写入
finance_ready_at = claim_approved_at并触发财务交接。
金额规则:
- 商品收入为
0.00; - 赔付收入等于平台人工核准的赔付金额,不要求等于商品金额,但商品和赔付不得重复计入;
- 赔付收入按普通卖家收入规则和订单原费率快照计算平台费;
- 已发生的物流费、税费和其他费用按真实事实及承担方继续处理。
赔付事实至少包含赔付案件号、订单、卖家、核准金额、币种、状态、核准人、核准时间和 来源版本。当前运行时派生的 logistics_claim 或申诉事件不能单独作为入账证据;正式赔付 来源未完成时不得执行自动交接。首版核准币种固定为 TWD,不接受外币赔付事实。
5. 正常完成后退款
本流程只允许发生在订单已经完成、但尚未成功交接财务之前:
- 退款开始时,订单域暂停普通完成终态的财务交接;
- 退款处理中保持
finance_ready_at = null; - 退款成功后设置
terminal_type = refunded、finance_ready_at = refund.processed_at; - 商品收入及对应商品平台费为
0.00; - 物流费、税费和其他费用按已经生效的真实事实及承担方处理。
订单普通完成交接与退款操作必须使用事务或 outbox 顺序保证,确保同一订单只产生一个 有效初次交接。如果普通终态已经成功交接财务,则不得再走本流程;首版不支持结算后 跨期退款。
6. 末端物流承担方注意事项
流程备注:退款存在人工操作过程,因此可在退款处理完成、写入
finance_ready_at前修改 末端物流责任人。存在末端物流且尚未签收时取消交易属于自动化流程,取消完成后默认borne_by=seller并直接进入财务,不设置等待人工修改责任人的时间窗口。该备注用于说明 两类流程为何具有不同的修改时机,不改变财务按交接时最终责任人计算的规则。
订单域必须在异常终态完成、写入 finance_ready_at 前确定末端物流最终责任人:
- 正常终态固定默认
borne_by=buyer; cancelled_shipped、logistics_claimed、refunded等异常终态固定默认borne_by=seller;cancelled_unshipped同样形成异常默认值,但因没有实际末端物流段,末端费用为0.00;- 退款人工处理期间,授权人员可把默认责任人改为
buyer或改回seller。改判必须保存 操作人、操作时间、原因、原值、新值和来源版本,最新有效改判覆盖终态默认值; - 存在末端物流、尚未签收即取消的
cancelled_shipped不开放责任人修改窗口,取消终态 形成后按默认seller立即交接; - 异常仍在处理或争议中时不得写入
finance_ready_at;异常被驳回并恢复正常终态时,使用 正常订单的buyer默认值,不得残留异常卖家责任。
财务不得自行裁决责任人,只消费并冻结交接载荷中的最终 borne_by。末端物流费用还必须 具备物流段、金额、币种和确认状态:
borne_by=buyer:属于买家侧费用,不进入卖家收入或支出;borne_by=seller:费用确认生效后进入卖家支出;- 尚未发生、已成功拦截、未确认或已撤销的物流段均不得扣款;责任人为
seller也不能 把预估或不存在的费用计入卖家账; - 终态或最终责任人缺失、责任人版本冲突时不得交接;已有费用事实的金额、币种、方向或 确认状态不完整时按证据异常处理。
财务成功交接后责任人被正式纠正时,不覆盖初始快照,也不转换原终态:原账单未确认则 追加调整或冲正绑定原账单,原账单已确认则进入之后最早的未确认结算期。卖家账单中的 物流扣减不代表平台应付物流方金额。
7. 验收场景
- 未发货取消自动进入财务,所有金额均为
0.00。 - 集货仓出库前拦截成功,不产生跨境物流费。
- 已进入跨境但末端被拦截,只计已经生效的跨境费用。
- 已进入末端,跨境和末端各按真实物流段计费。
- 已发货取消先生成财务记录,后到费用在未确认账单更新或已确认账单下期调整。
- 物流丢失赔付只计一次赔付收入,商品收入为零,并按原费率计算赔付平台费。
- 完成后退款发生在交接前,只产生
refunded终态,不得同时产生普通终态交接。 - 正常终态默认买家承担,末端费不进入卖家账。
- 已发货取消、退款和物流赔付终态默认卖家承担;存在实际确认末端费用时逐段扣减。
- 退款处理期间改判为买家承担时末端扣款为
0.00;改回卖家时恢复按实际费用扣减。 - 未发货取消、末端拦截成功或没有末端物流段时,即使默认卖家承担也不得产生末端扣款。
- 存在末端物流且未签收即取消时,默认卖家承担并自动进入财务,不等待人工改判。
- 异常处理中不交接;异常被驳回并恢复正常后不得残留卖家承担或异常末端扣款。
- 财务交接后的终态禁止转换,责任人及金额纠正只使用追加调整或冲正,不原地改账。
- 重复取消、退款、赔付、责任改判和物流费用通知不产生重复财务记录或调整。
8. 实施前置
未来实现前必须先完成订单域 B0:
- 审计现有
completed_at、取消、退款和履约状态的真实语义; - 持久化异常终态、异常完成时间和交接版本;
- 建立正式物流赔付审批事实;
- 为普通完成与退款竞态建立事务或 outbox 契约;
- 为物流段费用、终态默认责任、人工改判和责任版本提供稳定、可审计的来源字段。
上述前置未完成时,本文只作为设计契约,不授权写订单表、生成迁移或处理真实数据。