Kennisbank/Escrow en finance/Escrow fees engine: atomische splits bij elke transitie
03Escrow en finance3 min lezen

Escrow fees engine: atomische splits bij elke transitie

Hoe seller payout, platform fee en buyer refund bij elke release, refund of split worden berekend en gesnapshot - zonder race conditions.

Een escrow transition die money beweegt moet dat atomically doen. Als de seller payout schrijft maar de platform fee niet, heb je een inconsistency die manueel gerepareerd moet worden. De H6 fees engine voorkomt dat door alle splits in één transaction te berekenen en als één settlement row te schrijven.

De fee structure

Fees zijn tenant-configurable per outcome en per category. Een typical config: release neemt een flat percentage van de seller (de platform fee), refund waives de platform fee (of rekent een kleinere dispute-handling fee), split neemt de platform fee proportioneel volgens het aandeel van elke party. Tiered volume pricing wordt ondersteund: deals boven een threshold krijgen een lager percentage. De engine leest de policy van de H7 policies page op het moment van de transition.

De split calculation

Voor release: total = held amount, platform_fee = total × fee_rate, seller_payout = total − platform_fee, buyer_refund = 0. Voor refund: platform_fee = 0 (of dispute_fee), seller_payout = 0, buyer_refund = total. Voor een split met 70/30 result: platform_fee = total × fee_rate, payable = total − platform_fee, seller_payout = payable × 0.7, buyer_refund = payable × 0.3. Alle drie numbers komen op de settlement row.

Atomicity

De settlement write gebeurt in dezelfde database transaction als de escrow state transition. Als iets faalt — fee policy not found, settlement table constraint violation — rolt de hele transaction terug. De escrow blijft in zijn previous state. Geen half-released funds. De user krijgt een specifieke error en kan retryn zodra het onderliggende issue gefixt is.

Currency snapshot

De settlement row bewaart de exchange rate op het moment van de transition (met de daily rates die door de H/exchange-rates cron worden refreshed). Als de deal currency verschilt van de platform reporting currency, worden beide amounts opgeslagen. Een settlement die in USD sluit op een dag waarop EUR/USD 1.08 was, wordt met die rate recorded; financial reports zes maanden later re-translaten niet stil.