End-of-Day Payment Settlement

System ↔ System

Batch transaction aggregation through clearing, ledger update, and reconciliation.

6 nodes · 6 edgesfinance
systemdbapi
Visual
End-of-Day Batchevent

Scheduled trigger at market close to begin settlement cycle.

sequentialTransaction Aggregation
Transaction Aggregationdb

Group transactions by counterparty, currency, and settlement date.

sequentialClearing House Submission
Clearing House Submissionapi

Submit netted positions to ACH/SWIFT/FedWire clearing network.

sequentialResponse Processing
Response Processingsystem

Parse clearing house response, flag rejections and exceptions.

conditionalLedger Update
fallbackClearing House Submission
Ledger Updatedb

Post settled amounts to general ledger with double-entry bookkeeping.

sequentialReconciliation
Reconciliationsystem

Match internal records against clearing confirmations, flag breaks.

uc-payment-settlement.osop.yaml
osop_version: "1.0"
id: "payment-settlement"
name: "End-of-Day Payment Settlement"
description: "Batch transaction aggregation through clearing, ledger update, and reconciliation."

nodes:
  - id: "eod_batch"
    type: "event"
    name: "End-of-Day Batch"
    description: "Scheduled trigger at market close to begin settlement cycle."

  - id: "txn_aggregate"
    type: "db"
    name: "Transaction Aggregation"
    description: "Group transactions by counterparty, currency, and settlement date."
    timeout_sec: 120

  - id: "clearing_submit"
    type: "api"
    subtype: "rest"
    name: "Clearing House Submission"
    description: "Submit netted positions to ACH/SWIFT/FedWire clearing network."
    security:
      risk_level: "critical"
    retry_policy:
      max_attempts: 3
      backoff: "exponential"

  - id: "response_process"
    type: "system"
    name: "Response Processing"
    description: "Parse clearing house response, flag rejections and exceptions."

  - id: "ledger_update"
    type: "db"
    name: "Ledger Update"
    description: "Post settled amounts to general ledger with double-entry bookkeeping."
    security:
      risk_level: "high"

  - id: "reconciliation"
    type: "system"
    name: "Reconciliation"
    description: "Match internal records against clearing confirmations, flag breaks."

edges:
  - from: "eod_batch"
    to: "txn_aggregate"
    mode: "sequential"
  - from: "txn_aggregate"
    to: "clearing_submit"
    mode: "sequential"
  - from: "clearing_submit"
    to: "response_process"
    mode: "sequential"
  - from: "response_process"
    to: "ledger_update"
    mode: "conditional"
    when: "response.status == 'accepted'"
  - from: "ledger_update"
    to: "reconciliation"
    mode: "sequential"
  - from: "response_process"
    to: "clearing_submit"
    mode: "fallback"
    label: "Resubmit rejected transactions"