Escrow Fees Engine: atomare Splits bei jeder Transition
Wie Seller Payout, Platform Fee und Buyer Refund bei jedem Release, Refund oder Split berechnet und gesnapshot werden - ohne Race Conditions.
Eine Escrow Transition, die Money bewegt, muss das atomically tun. Wenn der Seller Payout schreibt, aber die Platform Fee nicht, hast du eine Inconsistency, die manuell repariert werden muss. Der H6 Fees Engine verhindert das, indem er alle Splits in einer Transaction berechnet und als eine Settlement Row schreibt.
Die Fee Structure
Fees sind tenant-configurable per Outcome und Category. Eine typische Config: release nimmt einen Flat Percentage vom Seller (die Platform Fee), refund waives die Platform Fee (oder berechnet eine kleinere Dispute-handling Fee), split nimmt die Platform Fee proportional zum Share jeder Party. Tiered Volume Pricing wird unterstützt: Deals über einem Threshold bekommen einen niedrigeren Percentage. Die Engine liest die Policy von der H7 Policies Page im Moment der Transition.
Die Split Calculation
Für Release: total = held amount, platform_fee = total × fee_rate, seller_payout = total − platform_fee, buyer_refund = 0. Für Refund: platform_fee = 0 (oder dispute_fee), seller_payout = 0, buyer_refund = total. Für einen Split mit 70/30 Result: platform_fee = total × fee_rate, payable = total − platform_fee, seller_payout = payable × 0.7, buyer_refund = payable × 0.3. Alle drei Numbers gehen auf die Settlement Row.
Atomicity
Der Settlement Write passiert in derselben Database Transaction wie die Escrow State Transition. Wenn etwas fehlschlägt — fee policy not found, settlement table constraint violation — rollt die gesamte Transaction zurück. Das Escrow bleibt im previous state. Keine half-released Funds. Der User bekommt einen spezifischen Error und kann retryen, sobald das underlying issue gefixt ist.
Currency snapshot
Die Settlement Row speichert die Exchange Rate im Moment der Transition (mit den daily rates, die vom H/exchange-rates Cron refreshed werden). Wenn die Deal Currency von der Platform Reporting Currency abweicht, werden beide Amounts gespeichert. Ein Settlement, das in USD an einem Tag geschlossen wurde, an dem EUR/USD 1.08 war, wird mit dieser Rate recorded; Financial Reports sechs Monate später re-translaten nicht still.