معماری چندکسبوکاری، تجاری و تجارت الکترونیک · فصل ۳ — Cost، Pricing، P&L، Entitlement و SLA · 238
P&L per Client and Contribution Margin
Build a per-client P&L bridge that separates revenue, credits, direct variable cost, customer-specific support, allocated shared cost, contribution margin and optional fully loaded cost so profitability conclusions state exactly which layer they represent. میتواند برای «P&L per Client و Contribution Margin» یک تصمیم bounded با constraints، cost/risk و stop/pivot condition طراحی کند.
Lesson summary
Build a per-client P&L bridge that separates revenue, credits, direct variable cost, customer-specific support, allocated shared cost, contribution margin and optional fully loaded cost so profitability conclusions state exactly which layer they represent.
میتواند برای «P&L per Client و Contribution Margin» یک تصمیم bounded با constraints، cost/risk و stop/pivot condition طراحی کند.
This lesson produces
میتواند برای «P&L per Client و Contribution Margin» یک تصمیم bounded با constraints، cost/risk و stop/pivot condition طراحی کند.
Who it is for
Foundation
Use a field map, one worked scenario and explicit state vocabulary before independent construction.
Repair
Identify the failed evidence dimension, use the smallest mutated fixture and rerun only the affected gate.
Experienced
Compress definitions; require trade-off defense, counterexample analysis and changed-context transfer.
Prerequisites
This lesson is not about producing one convenient “profit per customer” number. It is about making every profitability conclusion state which layer it represents, which costs it includes, and which allocation version produced it.
1) The problem this lesson solves
Customer revenue is easy to display. Profitability becomes unreliable when credits, direct usage, payment fees, support effort, and shared-platform allocations are mixed without a stable scope. Two analysts can then report different customer “profit” numbers while both spreadsheets appear mathematically correct.
2) Lesson boundary and deliverable
The deliverable is Client P&L & Contribution Bridge v1. It is an internal decision artifact, not a statutory financial statement, tax return, or invoice. The bridge must trace from recognized_revenue through fully_loaded_profit while keeping cost_scope and allocation_version attached to the result.
3) Fact: gross profit is not the same as overhead-inclusive profit
Current QuickBooks Invoice Profitability guidance shows revenue, direct cost/COGS, and gross profit, and explicitly notes that overhead and operating expenses are not included in that report. A direct-cost profitability report therefore must not be relabeled automatically as a fully-loaded client P&L.
4) Fact: unit economics can reach customer and cost-to-serve metrics
FinOps Unit Economics recognizes business unit metrics such as cost per customer/tenant and cost to serve and connects unit economics with margin, sustainability, and pricing discussions. FinOps does not, however, prescribe the exact MAKNOW contribution-cost or shared-allocation policy.
5) Use the right mental model: Revenue → Contribution → Fully Loaded
Keep three layers separate: net revenue, contribution economics, and the fully-loaded view. Contribution asks what remains after direct/customer-variable costs to support shared costs. Fully loaded asks what remains after an allocated share of common costs. Those are different management questions.
6) Lock period and revenue boundaries first
client_id and period are decisive before any profitability calculation. recognized_revenue minus credits_refunds yields net_revenue. If a credit arrives after period close, the revised number may be calculable, but the result is not final until a restatement/version boundary is explicit.
7) Build contribution cost explicitly
In this contract, contribution cost is direct_usage_cost + payment_cost + customer_support_cost + other_variable_cost. When support work is attributable to that client, moving it into shared overhead merely to improve margin is a misclassification, not an optimization.
8) Recompute contribution profit and margin
contribution_profit = net_revenue − contribution_cost. When net_revenue > 0, contribution_margin_pct = contribution_profit / net_revenue × 100. This is still not fully-loaded profit. A percentage without scope, period, and evidence is not an auditable profitability conclusion.
9) Keep shared allocation as a separate layer
allocated_shared_cost remains separate from contribution cost and carries an allocation_version. Then fully_loaded_cost = contribution_cost + allocated_shared_cost, and fully_loaded_profit = net_revenue − fully_loaded_cost. If allocation logic changes, prior and current results require restatement or explicit segmentation before comparison.
10) Contribution-positive can still be fully-loaded-negative
When contribution profit is positive but fully-loaded profit is negative, this lesson emits MARGINAL. The customer is contributing toward shared costs but is not fully-loaded profitable under the current allocation. Removing this layer produces over-simplified “profitable/unprofitable” claims.
11) Publish the variance driver with the result
Profit changes need an explanation such as CREDIT, SUPPORT_AUTOMATION, USAGE_SPIKE, PAYMENT_FEE, ALLOCATION_V2, or a combination. variance_driver is not narrative decoration; it identifies which evidence changed relative to the comparison period.
12) Core Evidence Contract
Every bridge carries 20 dimensions, with 15 critical dimensions that cannot be silently omitted.
| Field | Critical | Purpose |
|---|---|---|
client_id | YES | Stable customer identity |
period | YES | Reporting period boundary |
recognized_revenue | NO | Revenue recognized for client/period |
credits_refunds | NO | Credits/refunds deducted from recognized revenue |
net_revenue | YES | recognized_revenue - credits_refunds |
direct_usage_cost | YES | Client-attributable model/cloud/usage cost |
payment_cost | YES | Client-attributable payment/processing cost |
customer_support_cost | YES | Client-attributable support effort cost |
other_variable_cost | NO | Other explicitly attributable variable cost |
contribution_cost | NO | Sum of contribution-layer direct/variable costs |
contribution_profit | YES | net_revenue - contribution_cost |
contribution_margin_pct | YES | Contribution profit as percent of net revenue |
allocated_shared_cost | YES | Allocated common/platform cost outside contribution layer |
fully_loaded_cost | YES | contribution_cost + allocated_shared_cost |
fully_loaded_profit | YES | net_revenue - fully_loaded_cost |
cost_scope | YES | Versioned definition of which costs belong to each layer |
allocation_version | YES | Version of shared-cost allocation logic |
variance_driver | YES | Named evidence change explaining movement |
decision_state | NO | PROFITABLE/MARGINAL/LOSS/HOLD/DISPUTED |
evidence_ref | YES | Trace to source rows or synthetic evidence |
13) Typed states prevent fake profitability
PROFITABLE means contribution-positive and fully-loaded non-negative. MARGINAL means contribution-positive but fully-loaded-negative. LOSS means contribution profit is non-positive. HOLD preserves incomplete/restatement-sensitive evidence; DISPUTED preserves incompatible scope or comparison. No aggregate score can override HOLD or DISPUTED.
14) Comparisons need a common scope and allocation version
Two customers or periods are directly comparable only when cost definitions and allocation versions align. If cost_scope differs or allocation logic changes, restate or segment first. This prevents a polished dashboard from creating a false trend through definition drift.
15) Lab, transfer, and freshness
The lab has eight fixtures: baseline, support misclassification, post-close refund, allocation-version drift, scope mismatch, missing evidence, contribution-positive/fully-loaded-negative economics, and final transfer. In transfer, Client A receives a credit, support falls after automation, and shared allocation moves to v2; both profitability layers must be rebuilt from changed evidence. QuickBooks and FinOps sources were rechecked on 2026-09-15 and material source changes require requalification before the review due date.
Assessment
There is no answer key in this lesson pack; answer it yourself and mark honestly. "Needs review" sends the lesson to your review queue.
ARC-019-Q1 retrieval
Explain why contribution profit and fully-loaded profit answer different management questions.
ARC-019-Q2 application
Build Client P&L & Contribution Bridge v1 for the baseline fixture and justify its typed state.
ARC-019-Q3 diagnosis
A customer-specific support cost is moved into shared overhead. Which evidence dimension fails and why?
ARC-019-Q4 transfer
Recompute after a credit, lower support cost from automation, and a new shared-allocation version.
Assessment rubric
Pass requires: explicit period/revenue boundary; complete critical evidence; correct contribution versus fully-loaded layer separation; visible cost scope/allocation version; no invented evidence; and independent recomputation of transfer.
References & freshness
Case studies
Lesson visuals
Flow from recognized revenue through contribution economics and shared allocation to fully loaded profit and typed decision states.
Lab files
python run_checks.py را اجرا کن. state هر fixture را ببین و هر بار فقط یک بُعد evidence را تغییر بده. دادهها کاملاً مصنوعی و آفلاین هستند. پاسخ baseline را oracle سناریوی transfer فرض نکن.