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

    Deposit instructions the PROVIDER issued for a virtual account, as opposed to the per-rail ones assembled from the linked bank row.

    The distinction is not cosmetic. Every other deposit instruction on a virtual account is derived from bank.<rail>_instructions overlaid with the VA's own account and routing number, which works because those accounts belong to a bank CFX has a row for. A RouteFusion account belongs to no such row — route_fusion's vendor has bank_id = NULL — and RouteFusion hands back the funding rails itself when the wallet is provisioned. Without this, that payload is stored on the VA and reachable from nowhere: the admin panel reads only the bank-derived fields, finds all three null, and tells the operator to "edit the bank record" for a bank that does not exist.

    Every field is nullable because RouteFusion types them that way, and there is no address here: the provider returns none, and inventing one to satisfy UsWireDepositInstructions would put fabricated values on a funding instruction someone is going to wire money against.

    type ProviderDepositInstructions = {
        accountHolderAddress1: string | null;
        accountHolderAddress2: string | null;
        accountHolderCity: string | null;
        accountHolderCountry: string | null;
        accountHolderName: string | null;
        accountHolderPostalCode: string | null;
        accountHolderStateProvinceRegion: string | null;
        accountNumber: string | null;
        bankAddress1: string | null;
        bankAddress2: string | null;
        bankCity: string | null;
        bankCountry: string | null;
        bankName: string | null;
        bankPostalCode: string | null;
        bankStateProvinceRegion: string | null;
        currency: string | null;
        message: string | null;
        qr:
            | {
                base64Image: string
                | null;
                expirationDate: string | null;
                qrDecoded: string | null;
            }
            | null;
        reference: string
        | null;
        routingCode: string | null;
        routingCodeAlternate: string | null;
        swiftBic: string | null;
        taxNumber: string | null;
        type: string | null;
    }
    Index
    accountHolderAddress1: string | null
    accountHolderAddress2: string | null
    accountHolderCity: string | null
    accountHolderCountry: string | null
    accountHolderName: string | null
    accountHolderPostalCode: string | null
    accountHolderStateProvinceRegion: string | null
    accountNumber: string | null
    bankAddress1: string | null
    bankAddress2: string | null
    bankCity: string | null
    bankCountry: string | null
    bankName: string | null
    bankPostalCode: string | null
    bankStateProvinceRegion: string | null
    currency: string | null
    message: string | null

    Depositor-facing guidance, e.g. where to put the reference.

    qr:
        | {
            base64Image: string
            | null;
            expirationDate: string | null;
            qrDecoded: string | null;
        }
        | null
    reference: string | null

    What the sender must put on the transfer for the provider to credit it.

    routingCode: string | null
    routingCodeAlternate: string | null
    swiftBic: string | null
    taxNumber: string | null
    type: string | null

    The provider's own label for the rail, e.g. "standard".