North Metric

    invalid_expiry_year: ask for a new card.

    A hosted card-update link fixes it in one step, because Stripe validates the date before saving.

    invalid_expiry_yearDECLINE CODE · UPDATE CARD
    RECOVERYHIGHRETRYNo, update firstCUSTOMER ACTIONUpdate card

    What does invalid_expiry_year mean in Stripe?

    It means the expiry year saved with the card isn’t valid: usually a typo, or a date that has already passed.

    What happens next

    The same decline, handled two ways: a fixed retry ladder, and Stripe Smart Retries with North Metric following up once they end. North Metric never retries a card; its part in failed payment recovery starts when Stripe stops.

    THE NEXT 14 DAYS · EXAMPLE✕FAILED RETRYACTIONPAID
    Fixed retry ladder · day 1, 3, 5, 7Fails ×4
    M✕
    T
    W✕
    T
    F✕
    S
    S✕
    M
    T
    W
    T
    F
    S
    S
    The same invalid expiry year, four times. Only a corrected date from the customer changes the result.
    Stripe + North MetricNote · day 14
    M
    T
    W
    T
    F
    S
    S
    M
    T
    W
    T
    F
    S
    S
    North Metric drafts a card-update note with its own link, at once if Stripe can’t retry the card, or when its retries end. You approve it first.

    What it means

    It most often comes from cards entered by hand on older checkout forms without date validation. Stripe returns it as a decline_code inside a card_error, so your integration sees the charge fail and the reason sits in this field.

    {
      "error": {
        "type": "card_error",
        "code": "invalid_expiry_year",
        "decline_code": "invalid_expiry_year",
        "message": "Your card was declined."
      }
    }

    Why it happens

    •The expiry year was mistyped when the card was saved.•The year on file isn’t one the issuer accepts for this card.•The card was reissued with a new expiry date that never reached Stripe.

    What to do

    01Don’t add retriesThe same details will fail every time, so a new card is the fix.
    02Send a hosted update linkOne click, card form prefilled, no login needed.
    03Collect on the new cardOnce a new card is saved, the open invoice can be paid with it.
    See which customers with a failed payment are at risk, in your own Stripe.Actions off until you turn them onGet your free churn report →

    What to tell the customer

    Be direct and short: the card on file needs updating, here’s the link, nothing else changes.

    From: Maya at AcmeSubject: Your card on file needs a quick update
    Hi Sam, The card we have for Acme looks out of date, so this month’s payment didn’t go through. You can update it here. Everything else stays the same. Maya
    SEND AT ONCE IF STRIPE CAN’T RETRY, OR WHEN ITS RETRIES END

    What not to do

    ✕Retry the same card on a schedule.✕Ask the customer to log in before they can update.✕Pause the account before they’ve had a chance to fix it.
    01RELATED CODES

    Same type,same playbook.

    Codes Stripe returns for the same underlying reason. Each one opens its own guide.

    expired_cardThe card on file has expiredHIGHOpen code →incorrect_cvcThe security code didn’t matchHIGHOpen code →incorrect_numberThe card number is wrongHIGHOpen code →
    All decline codes →
    02FAQ

    Questions aboutthis decline.

    Short answers. The full list of codes is one click away.

    Neither, exactly: a retry alone won’t work, but the customer can fix it (update card).

    AFTER STRIPE’S RETRIES

    Know who’s at riskafter a decline.

    Actions off until you turn them on