PayFanout API reference
    Preparing search index...

    Interface ChargeSavedPaymentMethodInput

    Off-session charge of a vaulted instrument — the primitive under recurring payments. No client, no card fields: the server charges the stored token.

    interface ChargeSavedPaymentMethodInput {
        amount: number;
        billingDetails?: {
            address?: {
                city?: string;
                country?: string;
                line1?: string;
                postalCode?: string;
            };
            email?: string;
            name?: string;
        };
        currency: string;
        id?: string;
        idempotencyKey: string;
        metadata?: Record<string, string>;
        occurrence?: "initial" | "recurring" | "unscheduled";
        pspCustomerId: string;
        savedPaymentMethodToken: string;
        statementDescriptor?: string;
    }
    Index
    amount: number
    billingDetails?: {
        address?: {
            city?: string;
            country?: string;
            line1?: string;
            postalCode?: string;
        };
        email?: string;
        name?: string;
    }

    AVS data for customer-present ("initial") charges — Paysafe rejects them without a zip (error 3004) when the stored token originated from browser tokenization. Merchant-initiated follow-ups don't need it.

    currency: string
    id?: string

    Host-app payment id, round-tripped via PSP metadata where supported.

    idempotencyKey: string
    metadata?: Record<string, string>
    occurrence?: "initial" | "recurring" | "unscheduled"

    Credential-on-file semantics: "initial" for the first charge in an agreement while the customer is present, "recurring" (default) for merchant-initiated follow-ups, "unscheduled" for irregular one-offs (top-ups). Networks require honest flags here.

    pspCustomerId: string
    savedPaymentMethodToken: string

    SavedPaymentMethod.token (or PaymentInfo.savedPaymentMethodToken).

    statementDescriptor?: string