PayFanout API reference
    Preparing search index...

    Interface PayPalClientAdapterConfig

    interface PayPalClientAdapterConfig {
        clientId: string;
        currency?: string;
        environment: "sandbox" | "live";
        getPayPalGlobal?: () => PayPalJsLike | undefined;
        intent?: "capture" | "authorize";
        loadScript?: (url: string) => Promise<void>;
        locale?: string;
        sdkBaseUrl?: string;
        userAction?: "continue" | "pay_now";
    }
    Index
    clientId: string

    REST app client id — public, holds no secret authority.

    currency?: string

    The JS SDK bakes the currency into its script URL and window.paypal is a page-wide singleton, so one page LOAD serves ONE currency (default "USD"). Another currency requires a full page navigation or reload — see the PayPal guide.

    environment: "sandbox" | "live"

    Explicit and validated, like every PayFanout adapter — even though the PayPal SDK infers sandbox vs live from the client id alone.

    getPayPalGlobal?: () => PayPalJsLike | undefined
    intent?: "capture" | "authorize"

    SDK intent — load-time and page-wide like currency, must match the order's intent: "capture" (default) for automatic capture, "authorize" for manual-capture sessions.

    loadScript?: (url: string) => Promise<void>
    locale?: string

    SDK display locale — a load-time query param (e.g. "fr-FR").

    sdkBaseUrl?: string

    Test seams.

    userAction?: "continue" | "pay_now"

    Client half of the server's userAction, sent as the SDK's commit query param so the popup's final button matches what happens next: "continue" (default, commit=false) shows "Continue" — PayFanout's Pay button completes the payment afterwards; "pay_now" (commit=true) belongs to capture-on-approval flows. Both adapters must agree.