关于 cogs-tracking-allocation
面向电商运营的销售成本跟踪与分摊指南,帮助商家配置产品成本、到岸成本、会计分录和毛利报告,涵盖常见电商平台。
主要功能
- 01按平台配置销售成本
- 02录入产品与变体成本
- 03分摊到岸成本
- 04会计集成配置指南
- 05毛利与库存报告
适用场景
- 01跟踪产品毛利
- 02将运费和关税计入 SKU 成本
- 03转向永续成本跟踪
- 04检查采购成本差异
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ finsilabs/ awesome-ecommerce-skills --skill cogs-tracking-allocation安装后在 Claude Code 中输入/cogs-tracking-allocation确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
tile.jsonevals/cogs-cost-ledger-schema-design/criteria.jsontask.mdevals/fifo-and-weighted-average-cost-assignmen/criteria.jsontask.mdevals/landed-cost-allocation-and-variance-anal/criteria.jsontask.md详细介绍
COGS 跟踪与分摊
概述
跟踪销售成本(COGS),可以了解每笔订单的实际毛利率——即收入减去所售商品的进货成本。大多数平台都允许你为每件商品输入成本价,会计集成(QuickBooks、Xero)会使用该价格自动生成 COGS 分录。到岸成本分摊(运费、清关费、关税)则需要专用应用,或在会计软件中手动分摊。只有当平台无法满足你的成本核算方法要求(先进先出、加权平均)时,才应构建自定义 COGS 系统。
何时使用此技能
- 当损益表显示了收入,但由于未跟踪单位成本而无法计算毛利率时
- 当进口商品且需要将运费、清关费和关税分摊到每个 SKU 的到岸成本中时
- 当从定期(年末盘点)成本跟踪切换到永续(实时)成本跟踪时
- 当构建差异分析报告以找出实际采购成本偏离标准成本的 SKU 时
- 当 ERP 集成(QuickBooks、NetSuite、Xero)要求在销售时生成 COGS 日记账分录时
核心说明
步骤 1:确定平台并选择合适的方法
| 平台 | 推荐方法 | 原因 |
|---|---|---|
| Shopify | 在 Admin 中输入每个变体的成本;使用 Shopify Analytics,或连接 QuickBooks/Xero 生成 COGS 报告 | Shopify 会存储每个变体的成本价;利润报告会使用该价格计算毛利率 |
| WooCommerce | 为每件商品输入采购价;连接 WooCommerce Bookings 和会计插件,或使用 Metorik 生成毛利率报告 | WooCommerce 原生存储成本价;Metorik 提供利润分析 |
| BigCommerce | 为每件商品填写采购成本字段;通过内置集成连接 QuickBooks | BigCommerce 提供成本价字段;QuickBooks 集成会自动过账 COGS |
| 自定义 / Headless | 构建包含先进先出 / 加权平均逻辑和会计日记账分录的成本分类账 | 当上述集成都无法满足你的成本核算方法或报告需求时,需要采用此方法 |
步骤 2:为每件商品输入成本价
开始生成 COGS 报告之前,需要为每个商品变体设置成本价。
Shopify
- 前往 Admin → Products → [Product] → [Variant]
- 在 Pricing 下输入 Cost per item 字段
- 然后,Shopify 的 Analytics → Finances → Product sales by variant 报告就会显示每件商品的利润
批量更新成本:使用 Matrixify(App Store),导入包含每个 SKU 成本的 CSV——对应的列名为 Variant Cost。
WooCommerce
- 前往 WooCommerce → Products → [Product] → Inventory tab
- 在 Purchase cost 字段中输入数值(需要安装 WooCommerce Cost of Goods 插件,或使用由主题 / 插件添加的该字段)
- 如需生成报告:安装 Metorik 或连接 QuickBooks for WooCommerce——两者都会读取成本字段并生成毛利率报告
WooCommerce 常用的 COGS 插件:
- WooCommerce Cost of Goods(SkyVerge)——添加成本字段并生成毛利率报告
- Metorik——提供分析仪表板,显示每件商品、每笔订单和每个渠道的利润
BigCommerce
- 前往 Products → [Product] → Pricing
- 在 Cost Price 字段中输入数值
- 通过 Apps → BigCommerce for QuickBooks 连接 QuickBooks Online——它会自动将成本价映射到 COGS 分录
步骤 3:连接会计软件以生成 COGS 日记账分录
仅有成本价字段只能在平台内生成报告。如需生成损益表和资产负债表,请连接会计集成,使其在订单履约时过账 COGS。
Shopify → QuickBooks / Xero
- QuickBooks Online:从 Shopify App Store 安装 QuickBooks Connector by OneSaas。配置:Sales → 已履行订单记入 COGS 科目;将产品映射到 QuickBooks 商品
- Xero:从 Shopify App Store 安装 Xero by Amaka 或 A2X。A2X 的使用最为广泛——它会将 Shopify 的每日销售汇总为 Xero 汇总日记账分录,其中包括 COGS
强烈推荐 Shopify + Xero 使用 A2X——它会自动处理货币转换、退款、费用和 COGS。
WooCommerce → QuickBooks / Xero
- QuickBooks:安装 QuickBooks Commerce 或 MyWorks Sync(最可靠的 WooCommerce ↔ QuickBooks 同步工具)
- Xero:安装 Xero for WooCommerce by Zapier 或 Xero Bridge by Parex,以直接同步
BigCommerce → QuickBooks
- 从 Apps marketplace 使用内置的 BigCommerce for QuickBooks 应用
- 在 Settings → Accounting → Cost of Goods Sold account 下配置 COGS 映射
第 4 步:设置到岸成本分摊
到岸成本(运费、保险费、关税和税费)必须在首次销售前计入产品成本,才能准确计算 COGS。
适用于大多数商家的手动方法:
- 收到货物并取得运费/海关费用发票
- 计算单位到岸成本:到岸成本总额 ÷ 收货总件数
- 更新平台中的成本价,将到岸成本计入其中
- 按价值分摊:
(Product value / Total shipment value) × Total landed cost ÷ Units received
适用于频繁进口的 Shopify 商家:
- 从 App Store 安装 Shopify Shipping Costs 或 LandedCost.app
- 这些应用允许你输入货物的到岸成本,并自动将其分摊到收到的 SKU
适用于会计软件用户:
- 在 QuickBooks 或 Xero 中,使用到岸成本分摊日记账分录,在商品售出前将运费/关税计入库存资产价值
第 5 步:运行 COGS 和利润率报告
输入成本价并连接会计软件后:
Shopify
- Analytics → Finances → Profit by product — 显示各变体的收入、成本和利润率
- Analytics → Reports → Product sales — 按日期范围筛选,包含售出件数和利润
WooCommerce + Metorik
- Metorik → Reports → Profitability — 按产品、订单和时间段显示毛利率
- Metorik 还会显示每笔订单的成本和利润率 %
QuickBooks / Xero
- P&L report — COGS 行显示该期间的销售商品总成本
- Inventory valuation summary — 按 SKU 显示当前现有库存价值
自定义 / 无头架构
对于需要采用 FIFO 进行永续盘存计价的无头店面,请构建成本分类账:
// Cost layer model — one row per purchase order receipt
interface InventoryCostLayer {
variantId: string;
receiptDate: Date;
quantityReceived: number;
quantityRemaining: number; // Decrements as units are sold
unitCostCents: number; // Purchase price per unit
landedCostCents: number; // Allocated freight/duties per unit
}
// FIFO cost assignment when an order is fulfilled
async function assignCogsFifo(variantId: string, locationId: string, quantity: number, orderId: string) {
let remaining = quantity;
let totalCostCents = 0;
return db.transaction(async tx => {
// Consume oldest cost layers first (FIFO)
const layers = await tx.inventoryCostLayers.findAll({
where: { variantId, locationId, quantityRemaining: { gt: 0 } },
orderBy: { receiptDate: 'asc' },
});
for (const layer of layers) {
if (remaining <= 0) break;
const units = Math.min(remaining, layer.quantityRemaining);
const totalUnitCost = layer.unitCostCents + layer.landedCostCents;
await tx.inventoryCostLayers.update(layer.id, {
quantityRemaining: layer.quantityRemaining - units,
});
await tx.cogsEntries.create({
orderId, variantId, quantity: units,
unitCostCents: totalUnitCost,
costingMethod: 'fifo',
});
totalCostCents += units * totalUnitCost;
remaining -= units;
}
if (remaining > 0) throw new Error(`Insufficient cost layers for ${variantId}`);
return { totalCostCents };
});
}
// Allocate landed costs to a received shipment (by value)
async function allocateLandedCostsByValue(shipmentId: string, totalLandedCostCents: number) {
const layers = await db.inventoryCostLayers.findByShipment(shipmentId);
const totalValue = layers.reduce((s, l) => s + l.unitCostCents * l.quantityReceived, 0);
for (const layer of layers) {
const share = (layer.unitCostCents * layer.quantityReceived) / totalValue;
const perUnitLanded = Math.round((share * totalLandedCostCents) / layer.quantityReceived);
await db.inventoryCostLayers.update(layer.id, { landedCostCents: perUnitLanded });
}
}
最佳实践
- 在首次导入或收货采购订单前输入成本价 — 只有设置成本后发生的订单才能准确计算 COGS;追溯修正需要手动调整
- 在首次销售前将到岸成本计入单位成本 — 收货后、销售前支付的运费和关税必须进行分摊;否则 COGS 会低估实际成本
- 为每个产品类别选择一种成本计价方法(FIFO 或加权平均)并坚持使用 — 年中切换需要进行重新估值的日记账分录
- 每月将平台利润报告与会计软件对账 — 差异通常意味着部分变体缺少成本价
- 在每个财年开始时设定标准成本以进行差异报告 — 将实际采购价格与标准成本比较,及早发现成本偏移
常见问题
| 问题 | 解决方案 |
|---|---|
| 某些产品的毛利率报告显示为 100% | 这些变体缺少成本价;Shopify 和 WooCommerce 会将缺失的成本默认为 $0,且不会提示 |
| QuickBooks 中的销货成本与平台的利润报告不一致 | 会计集成可能使用了不同的销货成本账户,或忽略了退款;请检查集成映射设置 |
| 到岸成本未计入销货成本 | 必须在首次销售前录入到岸成本;若在首次销售后录入,则需在会计软件中手动调整成本层 |
| 成本价包含了不应计入的增值税 | 请输入不含增值税的成本价;税费应在损益表中单独列示,而不属于销货成本 |
| 加权平均成本过时 | 根据当前库存层动态重新计算加权平均成本,切勿将其缓存为静态字段 |
相关技能
- @inventory-tracking
- @multi-warehouse
- @catalog-import-export
评论
支持 Markdown