关于 payout-split-management
面向运营多卖家的电商平台开发者与运营者,介绍如何设计卖家分账、佣金、预留金和定期打款流程。内容涵盖 Stripe Connect 及 Shopify、WooCommerce、BigCommerce 和定制平台的配置与合规注意事项。
主要功能
- 01规划多平台分账架构
- 02配置 Stripe Connect 卖家账户
- 03设置佣金与打款周期
- 04管理滚动预留金与退款风险
- 05跟踪卖家收入及 1099-K
适用场景
- 01为独立卖家搭建自动打款流程
- 02按比例或固定金额收取平台佣金
- 03为新卖家设置退款预留金
- 04准备卖家 1099-K 申报数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill payout-split-management安装后在 Claude Code 中输入/payout-split-management确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/1099-k-tax-reporting-and-rolling-reserve/criteria.jsontask.mdevals/order-earnings-calculation-with-deductio/criteria.jsontask.mdevals/stripe-connect-disbursement-processor/criteria.jsontask.md详细介绍
分账管理
概述
市场平台或多卖家平台必须将每笔付款拆分给平台(佣金)和一个或多个卖家(净结算款),在需要时预扣税款,管理用于退款保障的滚动准备金,并按计划拨付资金。Stripe Connect 是处理这类事务的行业标准方案——它会依法将资金转入关联卖家账户,处理税款预扣和 1099 申报,并消除将卖家资金存放在汇总银行账户中所带来的合规风险。
对于以多供应商市场形式运营的 Shopify、WooCommerce 和 BigCommerce 商店,专用市场应用(例如 WooCommerce 的 Dokan)会在 Stripe Connect 之上处理分账逻辑。
何时使用此技能
- 构建有独立卖家且需要向其拨付收入的市场平台时
- 平台需要按交易收取百分比佣金或固定佣金时
- 需要遵守 IRS 对卖家的 1099-K 申报要求时
- 管理高风险或新卖家的滚动准备金时
- 卖家要求加快拨款速度(每日/每周,而非每月)时
核心说明
步骤 1:选择合适的市场平台和拨款架构
| 平台 | 推荐方案 | 说明 |
|---|---|---|
| Shopify | Shopify Marketplace Kit + Stripe Connect,或 Multi-Vendor Marketplace 应用 | Shopify 原生不支持多卖家拨款;市场应用负责处理卖家账户和分账 |
| WooCommerce | Dokan Multivendor Marketplace 或 WCFM Marketplace + Stripe Connect | Dokan 是使用最广泛的 WooCommerce 市场插件;原生集成 Stripe Connect,支持分账 |
| BigCommerce | Multi-Seller Marketplace 应用 + Stripe Connect | BigCommerce App Marketplace 上的第三方市场应用 |
| 自定义/无头架构 | Stripe Connect(Express 或 Custom 账户) | 构建完整的分账逻辑;Stripe 负责合规、税务表单和资金路由 |
步骤 2:设置 Stripe Connect 以向卖家拨款
如果你希望自动将资金转给卖家(而非将所有款项收至自己的账户后再手动转账),就需要使用 Stripe Connect。
选择合适的 Connect 账户类型:
- Express 账户:卖家通过 Stripe 托管的表单完成入驻;Stripe 负责身份验证(KYC);最适合大多数市场平台
- Custom 账户:你可完全控制入驻体验;配置更复杂;适用于有特定体验要求的平台
- Standard 账户:卖家关联已有的 Stripe 账户;他们会在 Stripe 控制面板中看到你的平台
对于大多数市场平台,Express 账户是合适的选择。
在 Stripe 控制面板中设置 Stripe Connect:
- 前往 Stripe Dashboard → Connect → Overview 并配置平台
- 在 Connect → Settings → Account types 下启用 Express 账户
- 配置平台品牌信息(名称、徽标、颜色),用于托管的入驻流程
- 在平台设置中配置佣金结构(而不是在 Stripe 中配置——Stripe 会根据你为每笔交易指定的金额路由资金)
WooCommerce(Dokan)
- 安装 Dokan Multivendor Marketplace(免费基础版 + 来自 dokan.wedevs.com 的付费扩展)
- 前往 Dokan → Settings → Selling Options 并配置:
- 佣金类型:百分比(例如,每笔销售额的 15% 归平台所有)、固定费用或组合方式
- 佣金费率:作为市场平台保留的百分比或固定金额
- 前往 Dokan → Settings → Withdrawal 并配置付款计划(每周、每两周、每月)和最低提现金额
- 启用 Stripe Connect:前往 Dokan → Settings → Payment → Stripe Connect 并输入 Stripe Connect 平台密钥
- 卖家前往其供应商控制面板,点击 Payment Settings → Connect with Stripe,连接其 Stripe 账户
- 下单后,Dokan 会自动拆分付款:卖家的份额会转入其已连接的 Stripe 账户,佣金则留在平台的 Stripe 余额中
使用 Dokan 进行 1099 申报: Dokan 会跟踪每位卖家的累计付款。前往 Dokan → Reports → Vendor Wise Sales 导出供应商收入报告,用于准备 1099 申报。要自动生成 1099 表单,请使用 TaxBandits 或 Track1099——导入 Dokan 导出文件并生成符合 IRS 要求的 1099-K 表单。
Shopify(Multi-Vendor Marketplace app)
- 从 Shopify App Store 安装 Multi-Vendor Marketplace 或 Marketplace Kit(由多个供应商提供)
- 在应用的供应商设置中配置供应商佣金费率
- 在应用的付款设置中连接 Stripe Connect,以便进行付款
- 供应商通过托管表单完成注册,并可在供应商门户中查看收入和申请付款
BigCommerce
- 从 BigCommerce App Marketplace 安装多卖家市场应用
- 在应用设置中配置佣金费率和付款计划
- 连接 Stripe Connect,以自动分配资金
自定义 / 无头架构
对于自定义市场平台构建,请使用 Stripe Connect 实现完整的拆分付款架构:
卖家注册(Express 账户):
// Create an Express Connect account for a new seller
const account = await stripe.accounts.create({
type: 'express',
country: 'US',
email: sellerEmail,
capabilities: { transfers: { requested: true } },
metadata: { seller_id: sellerId },
});
// Generate onboarding link — redirect seller to complete Stripe's KYC form
const accountLink = await stripe.accountLinks.create({
account: account.id,
refresh_url: `${process.env.PLATFORM_URL}/sellers/onboarding/retry`,
return_url: `${process.env.PLATFORM_URL}/sellers/onboarding/complete`,
type: 'account_onboarding',
});
// Save account.id to your database and redirect seller to accountLink.url
await db.sellers.update({ where: { id: sellerId }, data: { stripeAccountId: account.id } });
在结账时拆分付款(目标扣款模式):
// Create a payment intent that automatically routes commission to your platform
// and the seller's share to their connected account
const paymentIntent = await stripe.paymentIntents.create({
amount: orderTotalCents,
currency: 'usd',
payment_method_types: ['card'],
application_fee_amount: Math.round(orderTotalCents * commissionRate), // Platform commission
transfer_data: {
destination: seller.stripeAccountId, // Seller's Connect account
},
metadata: { order_id: orderId, seller_id: sellerId },
});
滚动准备金(预留一定比例以保障退款):
// Instead of immediate transfer, create a manual transfer on a delay
const transfer = await stripe.transfers.create({
amount: Math.round(sellerNetEarningsCents * (1 - ROLLING_RESERVE_RATE)), // 95% transferred now
currency: 'usd',
destination: seller.stripeAccountId,
transfer_group: `order_${orderId}`,
metadata: { order_id: orderId, reserve_amount: Math.round(sellerNetEarningsCents * ROLLING_RESERVE_RATE) },
});
// Schedule the reserve release 90 days later via a cron job or job queue
await reserveQueue.add('release-reserve', {
sellerId: seller.id,
orderId,
reserveAmount: Math.round(sellerNetEarningsCents * ROLLING_RESERVE_RATE),
}, { delay: 90 * 24 * 60 * 60 * 1000 });
1099-K 跟踪:
实时跟踪每位卖家的交易总额。对于 2024 年及以后,IRS 规定的 1099-K 门槛为 600 美元。
// Update seller YTD earnings after each order
await db.sellers.update({
where: { id: sellerId },
data: { ytdGrossVolume: { increment: orderSubtotal }, ytdTransactions: { increment: 1 } },
});
// Alert when approaching $600 threshold — request W-9 before first payout
const seller = await db.sellers.findUnique({ where: { id: sellerId } });
if (seller.ytdGrossVolume >= 400 && !seller.w9Collected) {
await sendW9RequestEmail(seller);
}
要生成 1099 表单,请使用 TaxBandits API 或 Track1099 API,而不要从头开始构建 IRS 表单生成流程。
第 3 步:配置付款计划和卖家门户
Stripe Connect 付款计划: 在 Stripe Dashboard 中前往 Connect → Settings → Payouts,配置已连接账户的默认付款计划(每天、每周或每月)。卖家账户可在你的平台设置中申请更改付款计划。
卖家收入控制面板: 卖家需要查看其收入、待付款项和准备金。请构建或使用预先构建的门户:
- Dokan/WCFM:包含供应商控制面板,可查看收入、申请付款和查看付款历史记录
- 自定义:使用 Stripe Connect Account Balance API,实时向卖家显示其可用余额
最佳实践
- 使用 Stripe Connect Express 或 Custom 账户 — 切勿将卖家资金存放在资金池银行账户中;使用 Stripe Connect,确保资金在转账前依法归平台所有
- 在首次付款前收集 W-9 — 如果没有 W-9,必须按 IRS 规定预扣 24% 的备用税款;将收集 W-9 纳入卖家入驻流程
- 在订单扣款时计算收入,而非付款时 — 收入记录应不可变,并关联到具体订单;付款是单独的汇总步骤
- 为新卖家设置滚动准备金 — 扣留 5–10% 的款项 90 天,以防退款和拒付;到期后按计划自动释放
- 将佣金率保存为快照 — 佣金率会随时间变化;切勿使用当前费率重新计算历史收入;应记录每笔销售发生时的费率
常见问题
| 问题 | 解决方案 |
|---|---|
| Stripe Connect 转账失败但没有任何提示 | 监听 transfer.failed webhook,并立即通知卖家和运营团队 |
| 滚动准备金到期后未释放 | 构建每日 cron 作业,检查释放日期;在预发布环境中使用较短的准备金期限进行测试 |
| 1099-K 总额与卖家记录不符 | 1099-K 必须报告扣除平台费用前的支付总额;使用订单总金额,而非卖家净收入 |
| 未向没有 W-9 的卖家预扣备用税款 | 如果入驻时未收集 W-9,则在数据库中设置标记;在收到 W-9 前,对该卖家的所有付款预扣 24% |
| 某个周期的退款金额超过销售额,导致付款金额为负 | 将负余额结转至下一个付款周期;切勿要求从卖家的银行账户追回款项 |
| Dokan 佣金拆分不正确 | 确认佣金率设置在供应商级别(而不只是全局默认值);在 Dokan → Logs 下查看 Dokan 日志,检查转账错误 |
相关技能
- @stripe-integration
- @payment-reconciliation-automation
- @accounts-receivable-automation
- @tax-compliance-automation
- @invoice-generation-automation