Commission Calculation Formula — IV Value Based
payment-based trigger
① Payment Received
$3,600.00
payment_amount on invoice line
→
② Exclude Tax
$3,272.73
÷ (1 + tax%) e.g. ÷1.10
×
③ Product IV% (pv)
20%
product.pv set per product
=
④ IV Value (pv_value)
$654.55
net_payment × pv / 100
×
⑤ Agent % (per company)
5% / 2.5% / 1%
percent1 / percent2 / percent3
=
⑥ Commission Earned
$32.73 / $16.36 / $6.55
L1 / L2 / L3 per agent level
// Step-by-step formula
net_payment = payment_amount / (1 + tax_rate)
pv_value = net_payment × product.pv / 100
commission_L1 = pv_value × company.percent1 / 100
commission_L2 = pv_value × company.percent2 / 100 // agent.new_parent_id
commission_L3 = pv_value × company.percent3 / 100 // agent.new_parent_id.new_parent_id
net_payment = payment_amount / (1 + tax_rate)
pv_value = net_payment × product.pv / 100
commission_L1 = pv_value × company.percent1 / 100
commission_L2 = pv_value × company.percent2 / 100 // agent.new_parent_id
commission_L3 = pv_value × company.percent3 / 100 // agent.new_parent_id.new_parent_id
Plan Settings
Per-Company Commission Rates
commission_plan_company table
Acme Corp (HQ)
Acme Europe
Acme MENA
Acme Asia
| Agent Level | Partner Field | Line Type | Description |
Acme Corp (HQ) USD · Default company |
IV Calc Preview |
|---|---|---|---|---|---|
|
1
Level 1 Direct Agent |
agent.commission_id |
type = 'one' | Planner assigned directly to customer. Always required. |
%
percent1
|
$32.73
on $654.55 IV
|
|
2
Level 2 Parent Agent (Upline) |
agent.new_parent_id |
type = 'double' | Direct upline of the assigned planner. Earns simultaneously. |
%
percent2
|
$16.36
on $654.55 IV
|
|
3
Level 3 Grandparent Agent |
agent.new_parent_id |
type = 'triple' | Upline's upline. Earns simultaneously from same payment. |
%
percent3
|
$6.55
on $654.55 IV
|
| Total Commission (all 3 levels simultaneously) |
8.50%
of IV value
|
$55.64
total payout
|
|||
All Companies — Rate Comparison
| Company | L1 % (percent1) | L2 % (percent2) | L3 % (percent3) | Total % | Currency | Actions |
|---|---|---|---|---|---|---|
|
Acme Corp (HQ) Default · Active |
5.00% | 2.50% | 1.00% | 8.50% | USD | |
|
Acme Europe EU region |
6.00% | 3.00% | 1.50% | 10.50% | EUR | |
|
Acme MENA Middle East & Africa |
7.00% | 3.50% | 2.00% | 12.50% | MAD | |
|
Acme Asia APAC region |
4.50% | 2.00% | 0.80% | 7.30% | SGD |
+ Add Company Rate
Product IV% Configuration (product.pv)
Drives pv_value calculation
💡
IV% (pv) is set per product. Commission is calculated as:
net_payment × product.pv / 100 = pv_value. Products with commission_free = True are excluded from all commission calculations.| Product | Category | IV% (pv) | Commission Free | Sale Price | IV on $1,000 payment |
|---|---|---|---|---|---|
|
Enterprise License
Annual SaaS subscription
|
Software |
%
|
$10,000 |
$227.27
net $909.09 × 25%
|
|
|
Consulting Services
Professional hours
|
Services |
%
|
$5,200 |
$181.82
net $909.09 × 20%
|
|
|
Support Package
Annual premium support
|
Support |
%
|
$2,500 |
$136.36
net $909.09 × 15%
|
|
|
Shipping / Delivery Fee
Logistics cost pass-through
|
Other |
%
|
$0 |
$0.00
commission_free = True
|
🧮 Live Commission Simulator — Test your rates
Company
Product IV% (pv)
%
Payment Amount ($)
Tax Rate (%)
%
Commission Free?
net = $3,600 ÷ 1.10 = $3,272.73
pv_value = $3,272.73 × 20% = $654.55
L1 = $654.55 × 5.00% = $32.73
L2 = $654.55 × 2.50% = $16.36
L3 = $654.55 × 1.00% = $6.55
pv_value = $3,272.73 × 20% = $654.55
L1 = $654.55 × 5.00% = $32.73
L2 = $654.55 × 2.50% = $16.36
L3 = $654.55 × 1.00% = $6.55
① Payment Amount
$3,600.00
② Net (excl. tax)
$3,272.73
③ Product IV% applied
20%
④ IV Value (pv_value)
$654.55
L1 Commission (percent1)
$32.73
L2 Commission (percent2)
$16.36
L3 Commission (percent3)
$6.55
TOTAL PAYOUT (all 3 levels)
$55.64
As % of gross payment
1.55%
Business Rules & Validation
Max 1 agent per customer:
_check_agent_ids_limit() raises ValidationError if more than 1 planner assigned to a customer partner.Simultaneous all-level payout: All 3 levels earn commission from the same invoice payment at the same time — no sequential dependency.
Commission-free products: If
product.commission_free = True, _get_commission_amount() returns 0 regardless of agent or plan.Company isolation: Each company's rates are independent. An agent working across companies earns different amounts per company using the same plan.
Payment-based trigger: When
invoice_state = 'paid', commission lines are only created after action_register_payment() — not on posting.Net amount base: Tax is excluded before IV% is applied:
net = payment / (1 + tax_rate) → pv_value = net × product.pv / 100.Settlement cancellation guard: Invoices cannot be cancelled if any agent line has already been settled (
account.move.button_cancel() blocked).