PayFanout API reference
    Preparing search index...

    Interface RenewalReplay

    A renewal charge that ended without a definitive answer, so the money may have moved: the PSP was unreachable or rate limiting, the error was unknown or marked outcomeUnknown, or it was a first processing_error. Until an answer settles it, every charge for the period replays this request under this key. A PSP that keeps the key's result (Stripe, for a request that began executing) then answers with the original instead of charging again; one that refuses a reused key needs its adapter to read the original back and to mark what it cannot read back outcomeUnknown. The request is kept as sent because a PSP refuses a reused key carrying other parameters, or answers it with the original's result.

    Replays run on replayDelaysMinutes and only within replayWindowHours of the first send: past that a PSP may no longer hold the key, and a replay could charge again. A pin that runs out of replays is frozen and waits for resolvePendingRenewal, like a pending renewal.

    interface RenewalReplay {
        afterProcessingError: boolean;
        contested?: boolean;
        firstSentAt: string;
        frozen?: boolean;
        idempotencyKey: string;
        request: RenewalRequest;
        uncertainAnswers: number;
    }
    Index
    afterProcessingError: boolean

    A processing_error not marked outcomeUnknown already answered this request, so the next one is taken as the attempt's definitive failure.

    contested?: boolean

    An overlapping run sent another request under this key (a card or plan set while this charge was in flight). The PSP holds whichever reached it first, and a failure may be its refusal of the other one, so a failure freezes the pin instead of settling the attempt; a success still settles it.

    firstSentAt: string

    ISO 8601 — when the original charge was sent.

    frozen?: boolean

    No replay can be sent safely any more: the schedule is spent, or the next replay would fall outside replayWindowHours. The cron leaves the period alone until resolvePendingRenewal settles the charge.

    idempotencyKey: string

    The key the original charge used; every replay reuses it.

    uncertainAnswers: number

    Uncertain answers this request has had so far.