Studio · editor · transfer_template

← landing → diagram

InternalTransferCycle

Name
InternalTransferCycle
Expected net
0
Completion expression
business_day_end+1d
Leg rails
InternalTransferDebit, InternalTransferCredit, InternalTransferSuspenseClose
Variable rail XOR groups
Typical firings per period (min, max)
Description
Three-leg suspense-mediated on-us transfer cycle. The source DDA debits, the destination DDA credits, and the suspense GL holds the difference until the cycle closes net-zero by the next business day end. The suspense-close leg's `Variable` direction lets it absorb either side of the cycle's imbalance — the cycle always closes to zero regardless of which DDA's posting lands first or last.

MerchantSettlementCycle

Name
MerchantSettlementCycle
Expected net
0
Completion expression
business_day_end
Leg rails
SettlementAutoSettle, SettlementStandardSettle, SettlementSlowSettle, NoFraudReview, StandardFraudReview, EnhancedFraudReview, MerchantCardSale
Variable rail XOR groups
  • group 1: SettlementAutoSettle, SettlementStandardSettle, SettlementSlowSettle
  • group 2: NoFraudReview, StandardFraudReview, EnhancedFraudReview
Typical firings per period (min, max)
Description
TransferKey-grouped merchant settlement. All `MerchantCardSale` firings carrying the same `(merchant_id, settlement_period)` pair join one shared Transfer. Net is zero (each sale firing's external-debit + clearing-credit nets to zero, and the sum across firings preserves that). Completion at `business_day_end` triggers the chain: per the `PayoutVehicle` XOR group, exactly one of `MerchantPayoutACH` / `Wire` / `Check` fires to drain the merchant's accumulated clearing balance. AB.3.6 (2026-05-19): per-merchant config picks one settlement- timing variant AND one fraud-review variant per cycle. Two independent XOR groups in `leg_rail_xor_groups` — auto/standard/ slow for the cycle's close cadence, no/standard/enhanced for the review level. Each variant carries its own `max_pending_age` so the L1 stuck_pending matview surfaces a different SLA for each operating mode. ETL bugs where a cycle fires zero or two+ members of a group surface on the AB.3.3 xor_group_violation matview.

MerchantWeeklyPayoutBatch

Name
MerchantWeeklyPayoutBatch
Expected net
0
Completion expression
business_day_end+7d
Leg rails
MerchantWeeklyBatchClose
Variable rail XOR groups
Typical firings per period (min, max)
Description
AB.4.6 fan-in batch template (gap doc §2 MerchantPayoutBatch example). 5 daily MerchantDailySettleAggregator firings share one MerchantWeeklyPayoutBatch Transfer — the week's per-merchant payouts aggregate into a single closure leg posting. The L1 _fan_in_disagreement matview reads parent_count per child Transfer and flags batches with too few (missing contribution) or too many (cross-batch contamination) parent firings.