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

    One org of a RouteFusion customer, with whether its RouteFusion business entity can be onboarded now. eligible orgs run on the next onboard. An active + verified org under an active program that is not yet eligible carries its unmet missingRequirements so the page can tell the operator exactly what to fix and link them to it. Hard-ineligible orgs (already onboarded, not verified, no AiPrise verification session, no active program) carry a human ineligibleReason instead.

    type RfBackfillCandidate = {
        eligible: boolean;
        email: NonNullable<Organization["email"]> | null;
        incorporationDate: string | null;
        ineligibleReason?: string;
        lastFinalizeError?: RfFinalizeError;
        missingRequirements: RfRequirement[];
        name: string;
        organizationId: string;
        phone: NonNullable<Organization["phone"]> | null;
        representatives: RfRepresentative[];
        rfEntityStatus?: RfEntityStatus;
        status: Organization["status"];
        websiteUrl: NonNullable<Organization["websiteUrl"]> | null;
    }
    Index
    eligible: boolean

    True when the onboarding workflow can be started for this org right now.

    email: NonNullable<Organization["email"]> | null

    The RouteFusion-required contact trio, echoed so the panel's inline contact-details fix can pre-fill without a second fetch. null is a genuinely-unset field (which is what makes contactInfo unmet).

    incorporationDate: string | null

    Stored org.data.incorporationDate; null when AiPrise had none.

    ineligibleReason?: string

    Why the org is hard-ineligible (already onboarded / not verified / no AiPrise verification session / no active program). Set only for those states — an org that is merely missing requirements carries missingRequirements instead.

    lastFinalizeError?: RfFinalizeError

    RouteFusion's most recent refusal to accept this entity for KYB review, or absent when the last submission was accepted (or none has run).

    The ONLY operator-visible account of a country-specific requirement CFX can't pre-check: missingRequirements covers what missingRepresentativeFields and the org gates know to look for, and this covers whatever RouteFusion asked for beyond that. An org showing no unmet requirements AND a lastFinalizeError is the signature of exactly that gap.

    missingRequirements: RfRequirement[]

    Unmet RouteFusion prerequisites for an active + verified org under an active program. Empty when the org is eligible or hard-ineligible (see ineligibleReason).

    name: string
    organizationId: string
    phone: NonNullable<Organization["phone"]> | null

    Stays branded (E164Phone) rather than widened to string — the inline fix has to round-trip a value RouteFusion will accept.

    representatives: RfRepresentative[]

    The org's related people and what each still needs, so the panel can offer a per-person fix. Every one of them is pushed to RouteFusion as a representative, so an incomplete person blocks onboarding just as surely as a missing org field.

    rfEntityStatus?: RfEntityStatus

    Present only when the org already has a pinned RouteFusion entity.

    status: Organization["status"]
    websiteUrl: NonNullable<Organization["websiteUrl"]> | null