@cfxlabsinc/b2b-services
    Preparing search index...

    Module @cfxlabsinc/bank-transaction-reconciliation-services

    bank-transaction-reconciliation-services

    bankTransactionReconciliationWorkflow and the activities behind it: the one place that decides what reconciliation a b2b.bank_transaction row is owed and carries it out.

    The dispatch spans four domains — withdrawals, deposits, virtual accounts and bank internal transfers — and no existing service library can see all of them. bank-transaction-services cannot reach withdrawal-services (that edge runs the other way, and TypeScript project references cannot be circular), and withdrawal-services and deposit-services are siblings with no edge between them. This package sits above all four and is imported only by temporal-worker and backoffice-api.

    Every producer of a bank_transaction row, via startBankTransactionReconciliationWorkflow in @cfxlabsinc/bank-transaction-services:

    • VictorWebhookEventConsumer (raw.source = "victor_webhook")
    • persistVictorBankTransactions (raw.source = "victor_sync")

    The workflow id is keyed on the bank transaction, so the two racing is a no-op.

    • A returned BankTransactionReconciliationOutcomeRECONCILED, ALREADY_RECONCILED, or NOT_APPLICABLE with the reason recorded.
    • A failed execution naming the gap: an unhandled rail (an outbound RTP send), a row with no methodData.method, a rail/quote-method mismatch, or a retryable condition that never resolved.

    Nothing completes silently having reconciled nothing.

    index
    workflows