Use when building 商家结算, 账期 T+N, 结算单, 抽佣, 待结算/可结算, merchant payout. Distinct from WeChat 分账 (backend-pay-split-account) and from GMV reports (backend-finance-stats).
Scanned 9/3/2026
Install to Claude Code
npx -y skills add 1398281322-a11y/java-backend-guardrails --skill finance-settlement --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Finance Settlement?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/1398281322-a11y-finance-settlement)More formats (shields.io, HTML) on the badges page.
---
name: finance-settlement
description: Use when building 商家结算, 账期 T+N, 结算单, 抽佣, 待结算/可结算, merchant payout. Distinct from WeChat 分账 (backend-pay-split-account) and from GMV reports (backend-finance-stats).
---
# 商家结算 / 账期
## When to Invoke
门店/商家要打款、T+1/T+7 账期、结算单、平台抽佣后应付。文旅核销后才可结算。面试:「怎么给商家结账」。
## When NOT
微信分账 API → `pay-split-account`(渠道把钱划走)。那是支付通道;本文件是 **平台账本上的应付与账单**。统计 GMV → `finance-stats`。
## 风险(面试考点)
支付成功立刻给商家可提现:退款时平台垫资。默认 **履约完成(发货确认/核销)后进入待结算,账期满可结算**。
结算单与交易单多对多:一笔订单可能跨账期退款,要从下期扣或追缴。不能结算后物理删除明细。
佣金:`应付商家 = 实付 - 平台佣金 - 渠道手续费(看合同)`。尾差规则固定。
和渠道分账同时存在时:渠道已分账则平台结算单只做对账,避免再打一笔。
## 方案选型(轻量优先)
```text
支付成功 → 记账「平台预收」(未对商家负债或冻结)
核销/收货 → 生成结算明细 status=PENDING,账期日=履约日+N
账期到 → 聚合成结算单 SETTLED,可提现/打款
退款 → 未结算明细冲红;已结算则下期扣或应收回
```
```sql
t_settle_item uk(order_no, sku_line) -- 一笔履约一行
t_settle_bill merchant_id + period -- 账期账单
```
打款:结算单 SUCCESS 才调代付;代付单号稳定,超时查单,见 `pay-refund-channel` 同类「同号重试」。
## 默认方案
日批:把昨日已核销未入明细的订单入 `settle_item`。账期批:PENDING 且 `available_at<=today` 汇总成账单。人工审核或自动打款。
明细保留订单号、核销号、金额分、佣金分,财务可钻取。
## 反例
错误:支付成功就给商家余额++。
正确:履约后才待结算。
错误:结算后 UPDATE 把历史金额改掉。
正确:冲红新行,不动已出账单金额(账单作废走红字单)。
错误:当渠道分账已打给门店,平台再打款一次。
正确:模式互斥或对账扣减。
## 验证
- 核销后未满账期,商家余额不增加。
- 账期内退款,账单金额减少或红字,不出现已打款又全额再打。
- 两门店拆单,各出各的结算明细。
## 评审清单
- [ ] 结算时点是履约不是支付
- [ ] 有账期与账单
- [ ] 退款冲减路径
- [ ] 未与渠道分账双打
---
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!