Why doesn't my newly added card show up immediately?
Most newly-added cards show up in the Valid Email Checker Payment Methods list within a second or two. Occasionally one takes a few seconds longer, or seems to be missing right after you finish the card form. This is almost always a webhook-timing issue, not a save failure. The card is saved at Stripe (or Paddle); VEC just has not heard about it yet.
How the save propagates
When you submit the card form, the order of events is:
- Browser sends the card details to Stripe (or Paddle) directly. VEC servers do not see it.
- Stripe tokenises the card, attaches it to your Stripe customer, and responds OK to your browser.
- Stripe fires a
payment_method.attachedwebhook to VEC. - VEC validates the webhook signature, checks the
card_attach_intent_atstamp, and inserts the card into thepayment_methodstable. - On your next page load, the Payment Methods tab queries that table and renders the card.
Steps 1 and 2 are instant. Steps 3 and 4 usually take under a second, but webhooks occasionally queue under load and arrive a few seconds late. If you opened the Payment Methods tab the very instant the form closed, the card may not be in the database yet.
What to do if it is missing
- Refresh the page. This re-queries
payment_methodsand almost always surfaces the card. - Wait a few seconds, refresh again. Webhook lag rarely exceeds 10 seconds. If it is still missing after a minute, the webhook may have failed entirely.
- Trigger a manual sync. Open the Payment Methods tab and click the sync icon (if present), or simply navigate away and back. VEC calls the
sync-payment-methodsedge function on tab focus, which fetches the full card list directly from Stripe and reconciles. - Check the portal directly. Open the customer portal and confirm the card is listed there. If yes but VEC still does not have it, contact support with your account email and the card last 4 — we can run the sync server-side.
Why VEC syncs by brand + last 4, not by processor ID
A quirk of Stripe's behaviour: each Checkout session generates a new processor payment-method ID even when the underlying physical card is the same. If VEC keyed cards purely by processor ID, the same Visa ending in 4242 would create a new row in our table every time you ran Checkout, leading to duplicate-looking rows. We instead deduplicate on (user_id, processor_name, card_brand, card_last4) so the same physical card always maps to the same row.
Related questions
Still stuck? Email support
