Visa 3DS Challenge Test Card Numbers

Visa · 3DS Challenge: 3DS challenge requires customer authentication. MockCard includes next_action.redirect_to_url on the payment_intent, matching Stripe 3DS patterns.

Visa test PANs use standard 16-digit formatting. MockCard returns Luhn-valid numbers and a signed payment_intent webhook — ideal for Stripe-style integrations and CI pipelines.

When to use: Test redirect flows, return_url handling, and abandonment when the user closes the challenge window.

CI tip: Combine with the chaos 3ds_abandoned scenario on Pro for abandonment after challenge starts.

Typical decline_code in webhook payloads: authentication_required.

visa

•••• •••• •••• ••••

Cardholder Name

CVV •••

Expires ••/••

Click card to flip

More Visa scenarios

Same scenario, other networks

Need webhook race conditions or 3DS abandonment? See payment failure testing and the API docs. Compare plans on pricing.

API example

const res = await fetch("https://mockcard.io/api/v1/generate", {
  method:  "POST",
  headers: {
    "Content-Type": "application/json",
    "X-Api-Key":    process.env.MOCKCARD_API_KEY ?? "",
  },
  body: JSON.stringify({
    brand:    "visa",      // visa | mastercard | rupay | amex
    scenario: "success",  // success | insufficient_funds | 3ds_challenge …
  }),
});

const card = await res.json();
// { card_number, expiry_month, expiry_year, cvv, brand, scenario }
console.log(card.card_number, card.cvv);