@cfxlabsinc/b2b-services
    Preparing search index...
    type PaymentInstrumentBackfillCandidate = {
        accountNumberLast4: string;
        eligible: boolean;
        entityName: string;
        holdsActionRequired: boolean;
        id: string;
        ineligibleReason?: string;
        missing: PaymentInstrumentVendor[];
        nameOnAccount: string;
        plan: {
            action: "REGISTER" | "ACTION_REQUIRED" | "WITHHELD";
            vendor: PaymentInstrumentVendor;
        }[];
        requiredInfo: RequiredInfoField[];
        routingNumber: string;
        status: PaymentInstrument["status"];
        type: BackfillInstrument["type"];
    }
    Index
    accountNumberLast4: string
    eligible: boolean

    True when every missing vendor can be registered right now.

    entityName: string

    Owning entity's display name.

    holdsActionRequired: boolean

    A backfill run moves the instrument to ACTION_REQUIRED, publishing statusUpdated.

    id: string

    Public payment-instrument id (pi_…).

    ineligibleReason?: string

    Why the instrument can't be registered yet. Set only when eligible is false.

    The vendors this instrument still lacks an id for.

    nameOnAccount: string

    Name on the external account.

    plan: {
        action: "REGISTER" | "ACTION_REQUIRED" | "WITHHELD";
        vendor: PaymentInstrumentVendor;
    }[]

    What a backfill run does for each missing vendor: register it, hold the instrument ACTION_REQUIRED for a missing input, or leave it withheld.

    requiredInfo: RequiredInfoField[]

    The fields the customer must add, as the ACTION_REQUIRED email names them.

    routingNumber: string
    status: PaymentInstrument["status"]
    type: BackfillInstrument["type"]