North Metric

    approve_with_id: ask them to confirm.

    A retry a day later often works. If it fails again, ask the customer to approve it with their bank.

    approve_with_idDECLINE CODE · AUTHENTICATE
    RECOVERYHIGHRETRYAfter 3-D SecureCUSTOMER ACTIONConfirm payment

    What does approve_with_id mean in Stripe?

    It means the issuer couldn’t approve the payment without extra verification it didn’t receive.

    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
    One more attempt can work. Four in a week mostly add declines while the bank waits to hear from the customer.
    Stripe + North MetricNote · day 14
    M
    T
    W
    T
    F
    S
    S
    M
    T
    W
    T
    F
    S
    S
    North Metric drafts a note with a link to confirm the payment, at once if Stripe can’t retry it, or when its retries end. You approve it first.

    What it means

    It is rare and usually bank-specific: the bank wants to confirm the cardholder before allowing the charge. 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": "card_declined",
        "decline_code": "approve_with_id",
        "message": "Your card was declined."
      }
    }

    Why it happens

    •The issuer couldn’t authorize the payment at that moment.•The bank wants to verify the cardholder before it approves the charge.•The issuer gave no further detail, so only the customer’s bank can say what it needs.

    What to do

    01Send the confirmation linkStripe’s hosted page runs the 3-D Secure challenge for you.
    02Remind once after 24 hoursBanks often send their own prompt too; one reminder is enough.
    03Charge on successListen for payment_intent.succeeded, then close the invoice.
    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

    Explain that their bank asked for a quick confirmation; it’s a security step, not a problem.

    From: Maya at AcmeSubject: Your bank needs a quick confirmation
    Hi Sam, Your bank asked to confirm this month’s Acme payment; it’s a standard security check. It takes a few seconds here. Nothing else changes. Maya
    SEND AT ONCE IF STRIPE CAN’T RETRY, OR WHEN ITS RETRIES END

    What not to do

    ✕Retry without sending the confirmation link.✕Call it a “failed payment”; it isn’t.✕Send the prompt at night when banks time out.
    01RELATED CODES

    Same type,same playbook.

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

    authentication_requiredThe bank needs the customer to confirm the paymentHIGHOpen code →insufficient_fundsThe card is valid but the balance was too lowHIGHOpen code →card_velocity_exceededThe card hit its spending or transaction limitHIGHOpen 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 (confirm payment).

    AFTER STRIPE’S RETRIES

    Know who’s at riskafter a decline.

    Actions off until you turn them on