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

    Class BankAccountAdminService

    Writes to the operator-maintained bank-account registry behind b2b.bank_account_view (BANK_ACCOUNT_VIEW.md § 4.7).

    Deliberately uncached, unlike BankAdminService. Banks are read on request paths and earn a ServiceCache; this table is admin-only and low-traffic, so a cache would buy nothing and add an invalidation surface that can go stale. Add one when a read path actually demands it.

    Two of the create-time checks exist to keep the operator's mental model and the view's contents in agreement — see BankAccountAdminService.create.

    Index
    • Parameters

      • __namedParameters: { db: B2bDatabase; internalEventPublisher: InternalEventPublisher | null }
        • db: B2bDatabase
        • internalEventPublisher: InternalEventPublisher | null

          Publishes bank.bankAccount.*; null publishes nothing (scripts, tests).

      Returns BankAccountAdminService

    db: B2bDatabase
    instance: (...args: []) => BankAccountAdminService = ...

    The process default: built from each dependency's own instance().

    • Register an account.

      Two checks run before the insert, and both exist so the operator learns about a problem while they can still act on it rather than by noticing a record that never appears in the view:

      • MANUAL_BANK_ACCOUNT_ALREADY_EXISTS surfaces the partial unique index as a functional error. The number is already registered; that is a form outcome, not a constraint-violation throw.
      • ACCOUNT_REGISTERED_BY_PROVIDER catches an account a virtual_account already owns. That table outranks a manual registration (§ 4.7), so the MANUAL arm would anti-join the row straight back out. A Victor account is itself a register row (provider = 'VICTOR'), so the key-conflict check above already names it.

      Parameters

      • input: WritableFields & { discoveredFrom?: "MANUAL" | "OBSERVED" }

      Returns Promise<
          | { ok: true; value: BankAccountRegistration }
          | { error: ServiceError; ok: false },
      >

    • Soft delete. Stamps status and deletedAt together — deletedAt is what the view's anti-joins read, status is the surfaced projection, and one without the other is a bug.

      The account is not lost: retiring the registration hands it back to the OBSERVED backstop, and frees its key for a fresh registration.

      Parameters

      • __namedParameters: { id: string }

      Returns Promise<{ ok: true; value: void } | { error: ServiceError; ok: false }>

    • Clears the row's RouteFusion beneficiary under routeFusionEntityId only if it is still beneficiaryId, and answers false when it was not. A hard delete, because the table holds only the pair's current beneficiary.

      Parameters

      • input: { beneficiaryId: string; id: string; routeFusionEntityId: string }

      Returns Promise<{ ok: true; value: boolean }>

    • Marks the row's beneficiary under routeFusionEntityId as one RouteFusion asked changes to, only while it is still beneficiaryId, and says whether it did. A beneficiary recorded for another payee replaces it and the mark.

      Parameters

      • input: {
            beneficiaryId: string;
            changesRequired: string[];
            id: string;
            routeFusionEntityId: string;
        }

      Returns Promise<{ ok: true; value: boolean }>

    • Records the row's RouteFusion beneficiary under routeFusionEntityId, only while the row still holds the payee's numbers; false when they moved. Replaces a beneficiary recorded for another payee, clearing any change request on it, and keeps one already recorded for this one, so two runs that each created one keep the first.

      Parameters

      Returns Promise<boolean>

    • Records Victor's counterparty for the row, only while the row still holds the numbers it was created for; false when they moved. Provider rows too.

      Parameters

      • input: {
            id: string;
            victorCounterparty: { id: string } & Pick<
                WireBatchBankInternalTransferInstruction,
                | "routingNumber"
                | "accountNumber"
                | "beneficiaryName"
                | "beneficiaryAddress",
            >;
        }

      Returns Promise<boolean>

    • Register an account a provider integration owns (a RouteFusion wallet, an Anchorage vault, a Zenus FBO). Idempotent on (provider, providerAccountId), so a retry returns the live row. Takes internal ids and skips the number checks because the row has no numbers.

      • PROVIDER_ACCOUNT_OWNED_ELSEWHERE: the live row disagrees on owner or ledger account, the same rule migration 20260929200600 enforces, so one register row never silently serves two owners.

      Parameters

      • input: {
            bankId: number | null;
            customerId: number | null;
            identityId: number | null;
            ledgerAccountId: number | null;
            name: string;
            organizationId: number | null;
            programId: string | null;
            provider: "ROUTE_FUSION" | "ANCHORAGE" | "ZENUS";
            providerAccountId: string;
            registeredBy: string;
            type: BankAccountType;
        }
        • bankId: number | null
        • customerId: number | null
        • identityId: number | null
        • ledgerAccountId: number | null
        • name: string
        • organizationId: number | null
        • programId: string | null

          The program the account sits in (a RouteFusion wallet's); null for none.

        • provider: "ROUTE_FUSION" | "ANCHORAGE" | "ZENUS"
        • providerAccountId: string
        • registeredBy: string
        • type: BankAccountType

      Returns Promise<
          | { ok: true; value: { externalId: string; id: number } }
          | { error: ServiceError; ok: false },
      >

    • Parameters

      • input: {
            accountNumbers?: string[];
            bankIds?: string[];
            customerIds?: string[];
            heldByInternalCustomer?: boolean;
            ids?: string[];
            includeDeleted?: boolean;
            orderBy?: DbOrderByCriterion<
                Omit<
                    PgTableWithColumns<
                        {
                            columns: {
                                accountNumber: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                achCompanyId: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                achCompanyName: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                bankExternalId: PgBuildColumn<
                                    "bank_account",
                                    Set$Type<PgTextBuilder<(...)>, string>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                bankId: PgBuildColumn<
                                    "bank_account",
                                    PgIntegerBuilder,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                bankName: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                createdAt: PgBuildColumn<
                                    "bank_account",
                                    SetHasDefault<SetNotNull<(...)>>,
                                    {
                                        data: Date;
                                        dataType: "object date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                currency: PgBuildColumn<
                                    "bank_account",
                                    SetHasDefault<SetNotNull<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                customerExternalId: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                customerId: PgBuildColumn<
                                    "bank_account",
                                    PgIntegerBuilder,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                deletedAt: PgBuildColumn<
                                    "bank_account",
                                    PgTimestampBuilder,
                                    {
                                        data: Date;
                                        dataType: "object date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                discoveredFrom: PgBuildColumn<
                                    "bank_account",
                                    SetHasDefault<Set$Type<(...), (...)>>,
                                    {
                                        data: (...) | (...) | (...);
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                externalId: PgBuildColumn<
                                    "bank_account",
                                    SetHasRuntimeDefault<SetNotNull<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                id: PgBuildColumn<
                                    "bank_account",
                                    HasIdentity<SetIsPrimaryKey<(...)>, "byDefault">,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...) | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: "byDefault";
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                identityExternalId: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                identityId: PgBuildColumn<
                                    "bank_account",
                                    PgIntegerBuilder,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                ledgerAccountExternalId: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                ledgerAccountId: PgBuildColumn<
                                    "bank_account",
                                    PgIntegerBuilder,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                memo: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                name: PgBuildColumn<
                                    "bank_account",
                                    SetNotNull<PgTextBuilder<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                notes: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                organizationExternalId: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                organizationId: PgBuildColumn<
                                    "bank_account",
                                    PgIntegerBuilder,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                parentKey: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                programExternalId: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                programId: PgBuildColumn<
                                    "bank_account",
                                    PgIntegerBuilder,
                                    {
                                        data: number;
                                        dataType: "number int32";
                                        driverParam: (...)
                                        | (...);
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                provider: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                providerAccountId: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                registeredBy: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                routingNumber: PgBuildColumn<
                                    "bank_account",
                                    PgTextBuilder<[(...), ...(...)[]]>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                                searchDocument: PgBuildColumn<
                                    "bank_account",
                                    SetHasGenerated<SetNotNull<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: true;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                searchDocumentAdmin: PgBuildColumn<
                                    "bank_account",
                                    SetHasGenerated<SetNotNull<(...)>>,
                                    {
                                        data: string;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: true;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                status: PgBuildColumn<
                                    "bank_account",
                                    SetHasDefault<Set$Type<(...), (...)>>,
                                    {
                                        data: (...) | (...) | (...);
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                type: PgBuildColumn<
                                    "bank_account",
                                    Set$Type<SetNotNull<(...)>, BankAccountType>,
                                    {
                                        data: BankAccountType;
                                        dataType: "string";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                updatedAt: PgBuildColumn<
                                    "bank_account",
                                    SetHasDefault<SetHasDefault<(...)>>,
                                    {
                                        data: Date;
                                        dataType: "object date";
                                        driverParam: string;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: true;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: true;
                                        tableName: "bank_account";
                                    },
                                >;
                                victorCounterparty: PgBuildColumn<
                                    "bank_account",
                                    Set$Type<PgJsonbBuilder, (...) & (...)>,
                                    {
                                        data: (...) & (...);
                                        dataType: "object json";
                                        driverParam: unknown;
                                        enumValues: undefined;
                                        generated: undefined;
                                        hasDefault: false;
                                        hasRuntimeDefault: false;
                                        identity: undefined;
                                        isAutoincrement: false;
                                        isPrimaryKey: false;
                                        name: string;
                                        notNull: false;
                                        tableName: "bank_account";
                                    },
                                >;
                            };
                            dialect: "pg";
                            isAlias: false;
                            name: "bank_account";
                            schema: "b2b";
                        },
                    >,
                    "enableRLS",
                >,
                "name"
                | "createdAt"
                | "updatedAt",
            >[];
            page?: number;
            pageSize?: number;
            providers?: string[];
            q?: string;
            routingNumbers?: string[];
            statuses?: ("ACTIVE" | "CLOSED" | "DELETED")[];
            types?: BankAccountType[];
        } = {}
        • OptionalaccountNumbers?: string[]
        • OptionalbankIds?: string[]
        • OptionalcustomerIds?: string[]
        • OptionalheldByInternalCustomer?: boolean

          Rows a live virtual account names for an internal customer: CFX's own RouteFusion wallets, the only kind a bank transfer pays out from.

        • Optionalids?: string[]
        • OptionalincludeDeleted?: boolean
        • OptionalorderBy?: DbOrderByCriterion<
              Omit<
                  PgTableWithColumns<
                      {
                          columns: {
                              accountNumber: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              achCompanyId: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              achCompanyName: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              bankExternalId: PgBuildColumn<
                                  "bank_account",
                                  Set$Type<PgTextBuilder<(...)>, string>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              bankId: PgBuildColumn<
                                  "bank_account",
                                  PgIntegerBuilder,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...)
                                      | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              bankName: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              createdAt: PgBuildColumn<
                                  "bank_account",
                                  SetHasDefault<SetNotNull<(...)>>,
                                  {
                                      data: Date;
                                      dataType: "object date";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              currency: PgBuildColumn<
                                  "bank_account",
                                  SetHasDefault<SetNotNull<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              customerExternalId: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              customerId: PgBuildColumn<
                                  "bank_account",
                                  PgIntegerBuilder,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...)
                                      | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              deletedAt: PgBuildColumn<
                                  "bank_account",
                                  PgTimestampBuilder,
                                  {
                                      data: Date;
                                      dataType: "object date";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              discoveredFrom: PgBuildColumn<
                                  "bank_account",
                                  SetHasDefault<Set$Type<(...), (...)>>,
                                  {
                                      data: (...) | (...) | (...);
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              externalId: PgBuildColumn<
                                  "bank_account",
                                  SetHasRuntimeDefault<SetNotNull<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              id: PgBuildColumn<
                                  "bank_account",
                                  HasIdentity<SetIsPrimaryKey<(...)>, "byDefault">,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...) | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: "byDefault";
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              identityExternalId: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              identityId: PgBuildColumn<
                                  "bank_account",
                                  PgIntegerBuilder,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...)
                                      | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              ledgerAccountExternalId: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              ledgerAccountId: PgBuildColumn<
                                  "bank_account",
                                  PgIntegerBuilder,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...)
                                      | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              memo: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              name: PgBuildColumn<
                                  "bank_account",
                                  SetNotNull<PgTextBuilder<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              notes: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              organizationExternalId: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              organizationId: PgBuildColumn<
                                  "bank_account",
                                  PgIntegerBuilder,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...)
                                      | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              parentKey: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              programExternalId: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              programId: PgBuildColumn<
                                  "bank_account",
                                  PgIntegerBuilder,
                                  {
                                      data: number;
                                      dataType: "number int32";
                                      driverParam: (...)
                                      | (...);
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              provider: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              providerAccountId: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              registeredBy: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              routingNumber: PgBuildColumn<
                                  "bank_account",
                                  PgTextBuilder<[(...), ...(...)[]]>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                              searchDocument: PgBuildColumn<
                                  "bank_account",
                                  SetHasGenerated<SetNotNull<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: true;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              searchDocumentAdmin: PgBuildColumn<
                                  "bank_account",
                                  SetHasGenerated<SetNotNull<(...)>>,
                                  {
                                      data: string;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: true;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              status: PgBuildColumn<
                                  "bank_account",
                                  SetHasDefault<Set$Type<(...), (...)>>,
                                  {
                                      data: (...) | (...) | (...);
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              type: PgBuildColumn<
                                  "bank_account",
                                  Set$Type<SetNotNull<(...)>, BankAccountType>,
                                  {
                                      data: BankAccountType;
                                      dataType: "string";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              updatedAt: PgBuildColumn<
                                  "bank_account",
                                  SetHasDefault<SetHasDefault<(...)>>,
                                  {
                                      data: Date;
                                      dataType: "object date";
                                      driverParam: string;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: true;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: true;
                                      tableName: "bank_account";
                                  },
                              >;
                              victorCounterparty: PgBuildColumn<
                                  "bank_account",
                                  Set$Type<PgJsonbBuilder, (...) & (...)>,
                                  {
                                      data: (...) & (...);
                                      dataType: "object json";
                                      driverParam: unknown;
                                      enumValues: undefined;
                                      generated: undefined;
                                      hasDefault: false;
                                      hasRuntimeDefault: false;
                                      identity: undefined;
                                      isAutoincrement: false;
                                      isPrimaryKey: false;
                                      name: string;
                                      notNull: false;
                                      tableName: "bank_account";
                                  },
                              >;
                          };
                          dialect: "pg";
                          isAlias: false;
                          name: "bank_account";
                          schema: "b2b";
                      },
                  >,
                  "enableRLS",
              >,
              "name"
              | "createdAt"
              | "updatedAt",
          >[]
        • Optionalpage?: number

          1-based page; defaults to 1.

        • OptionalpageSize?: number
        • Optionalproviders?: string[]
        • Optionalq?: string

          Free-text over name, account number, routing number and bank name.

        • OptionalroutingNumbers?: string[]
        • Optionalstatuses?: ("ACTIVE" | "CLOSED" | "DELETED")[]
        • Optionaltypes?: BankAccountType[]

      Returns Promise<
          {
              ok: true;
              value: {
                  hasNext: boolean;
                  items: BankAccountRegistration[];
                  total: number;
              };
          },
      >

    • Update mutable fields. Pass null to clear a nullable field; omitting one leaves it untouched.

      discoveredFrom is deliberately absent: how a row first arrived is a historical fact about the operator loop, not a field to rewrite. status excludes DELETED at the type level — that transition belongs to delete, which stamps deletedAt alongside it.

      Parameters

      • input: { id: string; status?: "ACTIVE" | "CLOSED" } & Partial<WritableFields>

      Returns Promise<
          | { ok: true; value: BankAccountRegistration }
          | { error: ServiceError; ok: false },
      >