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

    Type Alias MatcherCriteria

    MatcherCriteria: Partial<
        {
            bankId: BankId;
            cashDepositRetailerId: string;
            countryCode: string;
            customerId: string;
            customerStatus: SelectCustomer["status"];
            dayOfWeek: number;
            entityStatus: SelectIdentity["status"]
            | SelectOrganization["status"];
            entityType: "IDENTITY" | "ORGANIZATION";
            hasIdentityDocument: boolean;
            identityId: string;
            ledgerAccountBalance: BigNumber | number;
            ledgerAccountId: string;
            organizationId: string;
            paymentInstrumentProviders: Extract<
                SelectVirtualAccountProvider["type"],
                "VICTOR"
                | "ROUTE_FUSION",
            >[];
            paymentInstrumentStatus: Exclude<
                SelectPaymentInstrument["status"],
                "DELETED",
            >;
            placement: true;
            productId: Product["id"];
            programIds: string[];
            regionCode: string;
            sourceAmount: BigNumber
            | number;
            sourceChain: SelectChain["key"];
            sourceCurrency: string;
            sourceWalletType: SourceWalletType;
            speed: Speed;
            systemInitiated: boolean;
            targetAmount: BigNumber | number;
            targetCurrency: string;
            timeOfDay: string;
            usage24hCount: BigNumber | number;
            usage24hUsd: BigNumber | number;
            usage30dCount: BigNumber | number;
            usage30dUsd: BigNumber | number;
            usage7dCount: BigNumber | number;
            usage7dUsd: BigNumber | number;
            usageCalendarMonthCount: BigNumber | number;
            usageCalendarMonthUsd: BigNumber | number;
            vendorId: Vendor;
            verificationByo: boolean;
            virtualAccountId: string;
            virtualAccountNumber: string;
            virtualAccountProvider: string;
            virtualAccountStatus: "ACTIVE" | "PENDING" | "FAILED" | "INACTIVE";
        },
    >

    All fields that can appear in the criteria payload passed to b2b.rule_match. Route-scoped fields (bankId, speed) and entityType are injected by the SQL search layer — callers don't set them directly, but they are valid matcher fields because rules can target them.

    Rolling-window usage fields (usage{24h,7d,30d}{Usd,Count}) are pre-fetched by ProductQuoteService and passed through so fee/limit/activation rules can branch on the customer's prior volume — e.g. "charge 0bps once 30D volume crosses $1M". Set when the caller supplies getUsage; absent in estimate-mode callers.