My Stripe integration worked perfectly... until 22% of my iOS users couldn't pay (Safari's date bug cost me $8k)
so this is embarrassing but also kinda infuriating. I have been running a small subscription service for the past 4 months, stripe checkout, react frontend, nothing fancy and the conversion rate was solid at 8% and I was feeling pretty good about myself.
Then I noticed something weird in my stripe dashboard. tons of "incomplete" payment attempts from iOS and it was way more than android. I thought people were just abandoning checkout because of some pretty obvious stuff and we all know about that.
Then last Tuesday, someone emailed me "hey love your product but I've tried to subscribe 3 times and it keeps saying payment failed. I'm on an iPhone. help?"
I tested it on my iPhone 13 and it worked fine then I asked her to send screenshots and everything looked normal on her end too.
so I started digging up into stripe logs and saw that there were 127 failed payment attempts in the last 8 weeks and all of them were on iOS safari. I found the error and it was an invalid date format. I was quite literally losing $400 per week and had no idea about it.
I was using a standard `<input type="date">` for birthdate verification. How is that breaking?
Then i found out that safari's date picker has this insane bug like if your phone is set to certain locales (Persian, Thai, Japanese imperial) the date picker DISPLAYS in Gregorian calendar but SUBMITS in the locale's native calendar format.
Like for making things more clear if someone picks March 15, 2024 but safari sends 1403-12-25 (Persian calendar) to my backend and stripe sees a date from the year 1403 and rejects it.
And now the knockout punch? This only happens on 20-25% of iOS devices based on region settings. The emulator never showed it. my iPhone didn't show it. But for users in Iran, parts of India, Thailand, Japan? It was completely broken.
I spent 3 days rebuilding with a custom date picker. The conversion rate jumped from 8.1% to 9.7% literally overnight.
Talking about the numbers. I lost $8,200 in revenue over 2 months because I trusted safari's native input. And what I would suggest…is that if you're using `<input type="date">` for anything payment-related on iOS, test it with different locale settings, get an App tester if needed like Drizzdev or xyz or just use a custom picker. safari's implementation is a landmine.
So, has anyone else hit this? or am i just cursed lol
Posted Feb 19, 2026, 3:49 PM UTC