CustomerInboundACH two-leg
- Name
- CustomerInboundACH
- Source role
- ExternalCounterparty
- Destination role
- CustomerDDA
- Origin
- —
- Source origin (override)
- ExternalForcePosted
- Destination origin (override)
- InternalInitiated
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- external_reference, originator_id, customer_id
- Posted requirements
- external_reference, customer_id
- Max pending age
- 1 day, 0:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- 50.00, 5000.00
- Typical firings per period (min, max)
- —
- Description
- Inbound ACH credit originated by an external party (employer
payroll, vendor payment, peer transfer). External party drives
the rail (force-posts via the ACH network); SNB records the
offsetting credit on the receiving customer's DDA. Bank trace
number (`external_reference`) is required to reconcile the
Fed-statement view.
CustomerOutboundACH two-leg
- Name
- CustomerOutboundACH
- Source role
- CustomerDDA
- Destination role
- ExternalCounterparty
- Origin
- InternalInitiated
- Source origin (override)
- —
- Destination origin (override)
- —
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- external_reference, customer_id, beneficiary_id
- Posted requirements
- customer_id
- Max pending age
- 1 day, 0:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- 50.00, 10000.00
- Typical firings per period (min, max)
- —
- Description
- Outbound ACH debit initiated by SNB on behalf of a customer
(bill pay, vendor payment, recurring transfer). Both legs are
internally initiated until the Fed force-posts the matching
settlement to `CashDueFRB`. ETL must capture `customer_id`
before posting.
CustomerInboundWire two-leg
- Name
- CustomerInboundWire
- Source role
- ExternalCounterparty
- Destination role
- CustomerDDA
- Origin
- —
- Source origin (override)
- ExternalForcePosted
- Destination origin (override)
- InternalInitiated
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- fedwire_imad, originator_id, customer_id
- Posted requirements
- fedwire_imad, customer_id
- Max pending age
- 4:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Inbound wire credit. Fedwire is real-time so the same-day
reconciliation window is tight (`PT4H`). The `fedwire_imad`
is the Federal Reserve's input message accountability data —
mandatory for wire reconciliation and audit.
CustomerOutboundWire two-leg
- Name
- CustomerOutboundWire
- Source role
- CustomerDDA
- Destination role
- ExternalCounterparty
- Origin
- InternalInitiated
- Source origin (override)
- —
- Destination origin (override)
- —
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- fedwire_omad, customer_id, beneficiary_id
- Posted requirements
- fedwire_omad, customer_id
- Max pending age
- 4:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Outbound wire initiated by SNB. The `fedwire_omad` is captured
after Fedwire acknowledges the outbound message; until then
the leg is Pending. The wire-suspense GL holds the balance
mid-flight.
CustomerCashDeposit two-leg
- Name
- CustomerCashDeposit
- Source role
- ExternalCounterparty
- Destination role
- CustomerDDA
- Origin
- —
- Source origin (override)
- ExternalForcePosted
- Destination origin (override)
- InternalInitiated
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- branch_id, teller_id, customer_id
- Posted requirements
- customer_id
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- branch_id:
- br-bigfoot-001
- br-sasquatch-002
- br-yeti-003
teller_id:
- t-jane-001
- t-bob-002
- t-mary-003
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Physical cash deposit at an SNB branch. The "external" source
is the depositor walking in with cash — SNB models this as
external because the cash isn't on SNB's books until it lands
on the customer DDA. Branch + teller IDs are operational
audit context.
CustomerCashWithdrawal two-leg
- Name
- CustomerCashWithdrawal
- Source role
- CustomerDDA
- Destination role
- ExternalCounterparty
- Origin
- InternalInitiated
- Source origin (override)
- —
- Destination origin (override)
- —
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- branch_id, teller_id, customer_id
- Posted requirements
- customer_id
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Physical cash withdrawal at an SNB branch. Customer DDA debits;
cash leaves SNB's vault. Same operational audit context as the
deposit rail.
InternalTransferDebit single-leg
- Name
- InternalTransferDebit
- Leg role
- CustomerDDA
- Leg direction
- Debit
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- internal_transfer_id, source_customer_id, destination_customer_id, transfer_purpose
- Posted requirements
- —
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- transfer_purpose:
- rent
- payroll
- vendor_payment
- Typical amount range (min, max)
- 20.00, 50000.00
- Typical firings per period (min, max)
- —
- Description
- Debit leg of an on-us transfer cycle. Posts against the source
customer's DDA. Joins the shared `InternalTransferCycle` Transfer
via the `internal_transfer_id` TransferKey (declared first in
`metadata_keys` because it's auto-derived as a PostedRequirement
from the template's `transfer_key`).
InternalTransferCredit single-leg
- Name
- InternalTransferCredit
- Leg role
- CustomerDDA
- Leg direction
- Credit
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- internal_transfer_id, source_customer_id, destination_customer_id, transfer_purpose
- Posted requirements
- —
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- 20.00, 50000.00
- Typical firings per period (min, max)
- —
- Description
- Credit leg of an on-us transfer cycle. Posts against the
destination customer's DDA. Joins the shared `InternalTransferCycle`
Transfer via the `internal_transfer_id` TransferKey; the matching
debit and suspense-close legs share its ID.
InternalTransferSuspenseClose single-leg
- Name
- InternalTransferSuspenseClose
- Leg role
- InternalTransferSuspense
- Leg direction
- Variable
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- internal_transfer_id
- Posted requirements
- —
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Closing leg of an on-us transfer cycle on the suspense GL.
`Variable` direction — both amount and direction are computed at
posting time so that the bundle's net equals the template's
ExpectedNet of 0. MUST be the last leg posted on its Transfer
(sibling legs MUST be Posted first); a same-day `business_day_end+1d`
Completion gives operators a window to repair before Conservation
flags a stuck cycle.
CustomerFeeAccrual single-leg
- Name
- CustomerFeeAccrual
- Leg role
- CustomerDDA, InternalSuspenseRecon
- Leg direction
- Debit
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- customer_id, fee_type, accrual_period
- Posted requirements
- customer_id, fee_type
- Max pending age
- —
- Max unbundled age
- 31 days, 0:00:00
- Bundles activity
- —
- Metadata value examples
- accrual_period:
- 2026-04
- 2026-05
- 2026-06
fee_type:
- monthly_maintenance
- overdraft
- stop_pay
- Typical amount range (min, max)
- 0.25, 25.00
- Typical firings per period (min, max)
- —
- Description
- Daily fee accrual posting (monthly maintenance, overdraft,
stop-pay, etc.). Bundled by the monthly settlement aggregating
rail; un-bundled rows older than 31 days surface as exceptions
(the bundler missed them — investigate ETL or the settlement
job). The union leg_role lets the rail land on either a customer
DDA or the recon suspense GL for held accounts.
- Name
- ZBASweep
- Source role
- ZBASubAccount
- Destination role
- ConcentrationMaster
- Origin
- InternalInitiated
- Source origin (override)
- —
- Destination origin (override)
- —
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- sweep_date, location_id
- Posted requirements
- —
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Nightly zero-balance-account sweep. Each operating ZBA
sub-account transfers its EOD balance to the cash-concentration
master, leaving the sub-account at zero. One `ZBASweep` firing
per (sub-account, business-day) — a missing sweep means a
sub-account didn't zero out and either the customer's reporting
or SNB's funding is wrong.
ConcentrationToFRBSweep two-leg
- Name
- ConcentrationToFRBSweep
- Source role
- ConcentrationMaster
- Destination role
- ExternalCounterparty
- Origin
- —
- Source origin (override)
- InternalInitiated
- Destination origin (override)
- ExternalForcePosted
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- sweep_date, fedwire_omad
- Posted requirements
- fedwire_omad
- Max pending age
- 4:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Daily aggregate transfer from the cash-concentration master to
the Federal Reserve. Consolidates the day's ZBA-swept balances
into a single Fedwire — drastically reducing the per-sub-account
Fed traffic. Fedwire ack provides the OMAD that closes the leg.
ACHOriginationDailySweep two-leg
- Name
- ACHOriginationDailySweep
- Source role
- ACHOrigSettlement
- Destination role
- CashDueFRB
- Origin
- InternalInitiated
- Source origin (override)
- —
- Destination origin (override)
- —
- Expected net (standalone firing)
- 0
- Aggregating
- true
- Cadence
- daily-eod
- Metadata keys
- sweep_date, settlement_batch_id
- Posted requirements
- —
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- CustomerOutboundACH
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- End-of-business-day sweep that consolidates the day's outbound
ACH activity from the origination GL to the Fed-due GL. Reduces
per-customer Fed traffic to one consolidated entry. The
`BundleSelector` `[CustomerOutboundACH]` matches every Posted +
unbundled leg of that rail.
CustomerFeeMonthlySettlement single-leg
- Name
- CustomerFeeMonthlySettlement
- Leg role
- ExternalCounterparty
- Leg direction
- Debit
- Origin
- InternalInitiated
- Aggregating
- true
- Cadence
- monthly-eom
- Metadata keys
- settlement_period, contracted_processor_id
- Posted requirements
- —
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- CustomerFeeAccrual
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Month-end single-leg sweep settling the month's accrued fees out
to the contracted billing processor. Single-leg per SPEC's
"permitted" example — by design the drift it surfaces exits the
system into the External counterparty (the processor's books are
where the receivable lands). Cadence `monthly-eom` mirrors the
contracted processor billing cycle.
CustomerInboundACHReturnNSF two-leg
- Name
- CustomerInboundACHReturnNSF
- Source role
- CustomerDDA
- Destination role
- ExternalCounterparty
- Origin
- InternalInitiated
- Source origin (override)
- —
- Destination origin (override)
- —
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- original_external_reference, return_reason_code, customer_id
- Posted requirements
- original_external_reference, return_reason_code
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- return_reason_code:
- R01
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- ACH return path for NACHA reason code R01 (insufficient funds).
Reverses the inbound ACH credit by debiting the customer DDA
and re-crediting the originator's external counterparty. Fires
only when SNB couldn't honor the inbound credit — typically
same-day or next-business-day after the original posting.
CustomerInboundACHReturnStopPay two-leg
- Name
- CustomerInboundACHReturnStopPay
- Source role
- CustomerDDA
- Destination role
- ExternalCounterparty
- Origin
- InternalInitiated
- Source origin (override)
- —
- Destination origin (override)
- —
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- original_external_reference, return_reason_code, customer_id
- Posted requirements
- original_external_reference, return_reason_code
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- return_reason_code:
- R08
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- ACH return path for NACHA reason code R08 (stop payment by
receiver). Same posting shape as the NSF return; the difference
is provenance — the customer affirmatively stopped the payment
vs SNB returning for inability to settle.
- Name
- MerchantCardSale
- Source role
- ExternalCardNetwork
- Destination role
- MerchantPayableClearing
- Origin
- —
- Source origin (override)
- ExternalForcePosted
- Destination origin (override)
- InternalInitiated
- Expected net (standalone firing)
- —
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period, card_network_ref, card_brand
- Posted requirements
- merchant_id, settlement_period, card_network_ref
- Max pending age
- 1 day, 0:00:00
- Max unbundled age
- 2 days, 0:00:00
- Bundles activity
- —
- Metadata value examples
- card_brand:
- Visa
- Mastercard
- Amex
- Typical amount range (min, max)
- 5.00, 500.00
- Typical firings per period (min, max)
- —
- Description
- One merchant card-sale posting. Card network force-posts the
external (debit) leg via daily settlement file; SNB records the
matching credit on the MerchantPayableClearing GL. The
`transfer_key` of (merchant_id, settlement_period) joins this
firing into the shared `MerchantSettlementCycle` Transfer — many
sales for one (merchant, period) share one Transfer.id. Note: NO
`expected_net` on this rail because it's a leg of the
`MerchantSettlementCycle` template (S2: template legs MUST NOT
carry expected_net).
MerchantPayoutACH two-leg
- Name
- MerchantPayoutACH
- Source role
- MerchantPayableClearing
- Destination role
- MerchantDDA
- Origin
- InternalInitiated
- Source origin (override)
- —
- Destination origin (override)
- —
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period, payout_batch_id
- Posted requirements
- merchant_id, settlement_period
- Max pending age
- 1 day, 0:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- ACH payout vehicle for merchants who hold an SNB DDA. Debits the
MerchantPayableClearing GL and credits the merchant's DDA
directly (internal flow — no Fed leg). One of the three XOR
payout vehicles; per chain semantics, exactly one fires per
settled cycle. Lower friction than wire — SNB's preferred path
for SNB-banking merchants.
MerchantPayoutWire two-leg
- Name
- MerchantPayoutWire
- Source role
- MerchantPayableClearing
- Destination role
- ExternalCounterparty
- Origin
- —
- Source origin (override)
- InternalInitiated
- Destination origin (override)
- ExternalForcePosted
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period, fedwire_omad, beneficiary_bank
- Posted requirements
- merchant_id, settlement_period, fedwire_omad
- Max pending age
- 4:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Wire payout vehicle for merchants banking elsewhere. Debits the
MerchantPayableClearing GL and credits the merchant's external
counterparty bank via Fedwire. Per-leg origin: SNB initiates the
outbound leg (InternalInitiated); Fed force-posts the
external-counterparty leg when Fedwire confirms.
MerchantPayoutCheck two-leg
- Name
- MerchantPayoutCheck
- Source role
- MerchantPayableClearing
- Destination role
- ExternalCounterparty
- Origin
- —
- Source origin (override)
- InternalInitiated
- Destination origin (override)
- ExternalForcePosted
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period, check_number, payee_address
- Posted requirements
- merchant_id, settlement_period, check_number
- Max pending age
- 7 days, 0:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Paper-check payout vehicle (legacy merchants who don't yet
accept ACH or wire). SNB cuts the check; the external leg
doesn't post until the merchant deposits and the check clears
back through the banking system. `max_pending_age` of 7 days
reflects the tolerance for check-clearing latency before
surfacing as stuck.
ExternalCardSettlement single-leg
- Name
- ExternalCardSettlement
- Leg role
- ExternalCardNetwork
- Leg direction
- Credit
- Origin
- ExternalForcePosted
- Aggregating
- true
- Cadence
- daily-eod
- Metadata keys
- settlement_period, card_brand
- Posted requirements
- —
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- MerchantCardSale
- Metadata value examples
- card_brand:
- Visa
- Mastercard
- Amex
settlement_period:
- 2026-04
- 2026-05
- 2026-06
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- Daily aggregating rail that bundles the day's MerchantCardSale
activity for reporting back to the card network. Single-leg
per the SPEC's "single-leg sweep that lands in External"
pattern — bundles all sales in the day's window and reports the
net to the card network's reconciliation file. Force-posted
origin: the card network's settlement file is the authoritative
record.
SettlementAutoSettle single-leg
- Name
- SettlementAutoSettle
- Leg role
- MerchantPayableClearing
- Leg direction
- Variable
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period
- Posted requirements
- —
- Max pending age
- 4:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- AB.3.6 settlement-timing variant — auto-settle (T+0). High-volume
merchants enrolled in intraday clearing close their cycle within
4 hours of business_day_end. Tight max_pending_age surfaces ETL
delays on the L1 stuck_pending matview within the same day.
SettlementStandardSettle single-leg
- Name
- SettlementStandardSettle
- Leg role
- MerchantPayableClearing
- Leg direction
- Variable
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period
- Posted requirements
- —
- Max pending age
- 1 day, 0:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- AB.3.6 settlement-timing variant — standard-settle (T+1). The
common case for most merchants — cycle closes the business day
after the card-sale period ends.
SettlementSlowSettle single-leg
- Name
- SettlementSlowSettle
- Leg role
- MerchantPayableClearing
- Leg direction
- Variable
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period
- Posted requirements
- —
- Max pending age
- 7 days, 0:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- AB.3.6 settlement-timing variant — slow-settle (weekly batch).
Low-volume merchants opt into a weekly batch close; 7-day
max_pending_age tolerance reflects the cadence.
- Name
- NoFraudReview
- Leg role
- InternalSuspenseRecon
- Leg direction
- Variable
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period
- Posted requirements
- —
- Max pending age
- 0:15:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- AB.3.6 fraud-review variant — no review (auto-approved). Trusted
high-volume merchants with clean fraud histories skip manual
review; the cycle clears immediately on close. PT15M
max_pending_age is operational latency only.
StandardFraudReview single-leg
- Name
- StandardFraudReview
- Leg role
- InternalSuspenseRecon
- Leg direction
- Variable
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period
- Posted requirements
- —
- Max pending age
- 4:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- AB.3.6 fraud-review variant — analyst review. New or
medium-volume merchants pass through standard fraud-team
review before the cycle closes (4-hour SLA).
EnhancedFraudReview single-leg
- Name
- EnhancedFraudReview
- Leg role
- InternalSuspenseRecon
- Leg direction
- Variable
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, settlement_period
- Posted requirements
- —
- Max pending age
- 3 days, 0:00:00
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- AB.3.6 fraud-review variant — escalated review. Flagged
merchants or unusual-pattern cycles route through enhanced
review (3-day SLA). Surfaces as stuck_pending when the
compliance team lags beyond the cap.
MerchantDailySettleAggregator two-leg
- Name
- MerchantDailySettleAggregator
- Source role
- MerchantPayableClearing
- Destination role
- WireSettlementSuspense
- Origin
- InternalInitiated
- Source origin (override)
- —
- Destination origin (override)
- —
- Expected net (standalone firing)
- 0
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, payout_batch_id
- Posted requirements
- —
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- AB.4.6 fan-in parent rail. Each daily merchant settlement legs
out a balance from `MerchantPayableClearing` into
`WireSettlementSuspense` tagged with the batch id it'll
contribute to. The week's 5 daily firings then aggregate into
one `MerchantWeeklyPayoutBatch` Transfer per merchant via the
AB.4 fan-in chain below.
MerchantWeeklyBatchClose single-leg
- Name
- MerchantWeeklyBatchClose
- Leg role
- WireSettlementSuspense
- Leg direction
- Credit
- Origin
- InternalInitiated
- Aggregating
- false
- Cadence
- —
- Metadata keys
- merchant_id, payout_batch_id
- Posted requirements
- —
- Max pending age
- —
- Max unbundled age
- —
- Bundles activity
- —
- Metadata value examples
- —
- Typical amount range (min, max)
- —
- Typical firings per period (min, max)
- —
- Description
- AB.4.6 fan-in child closure leg. Posts ONCE per weekly
MerchantWeeklyPayoutBatch firing to credit
WireSettlementSuspense for the aggregated payout. Reconciles
via MerchantWeeklyPayoutBatch.leg_rails (S3 — every single-leg
non-aggregating rail must appear in some template's leg_rails).