Is there a reliable API to get RFC from CURP for onboarding automation?
Question
Answers
You can't directly derive an RFC from a CURP algorithmically — they share some components but the homoclave calculation is different between RENAPO (CURP) and SAT (RFC). You need a provider that queries SAT's registry using the CURP as a lookup key.
We found one on apipull.com that does this in about 400ms. You send the CURP, they return the associated RFC plus basic taxpayer data. Success rate in our experience is around 88% — the misses are mostly people who never registered with SAT (young users, informal workers). For your onboarding flow, just make the RFC field editable so users can fill it manually if the lookup fails.
Important caveat: not every CURP has an associated RFC. If the person has never registered with SAT (students, informal workers, people under 18), the lookup will return empty. Your flow needs to handle that case gracefully — don't show an error, just leave the field blank and let them type it or skip it depending on your business rules.
Also watch out for the multiple-RFC scenario. It's rare but happens with name corrections. The better providers return an array of matches with timestamps so you can pick the most recent active one.
We're redesigning our customer onboarding flow and want to reduce friction. Currently we ask users to provide both their CURP and RFC separately. Since most Mexicans know their CURP by heart (it's on their INE card) but often don't remember their RFC, we want to implement a feature to get RFC from CURP automatically.
The idea is: user enters their 18-character CURP, we call an API in the background to get RFC from CURP, and then pre-fill the RFC field for them. This saves a step and reduces input errors significantly. Based on our user research, about 40% of applicants abandon the form when they can't find their RFC — so auto-populating it could directly impact our conversion rate.
Technical questions about how to get RFC from CURP:
We understand that CURP and RFC share structural components. The first 10 characters of an RFC for personas físicas are derived from the same data as CURP (name initials + birth date). But the homoclave (last 3 characters) is different between the two systems, so you can't just algorithmically convert a CURP to an RFC — you need to query SAT's database to get the actual registered homoclave.
Our backend is in Java (Spring Boot) and we're looking for something with clean REST documentation or an existing Java client library. Volume would be around 600 lookups per day initially, scaling with our growth. We need the provider to handle rate limiting gracefully and ideally queue requests during SAT downtime rather than just failing.
Has anyone implemented this get RFC from CURP flow successfully? What provider did you use and how was the reliability in production? We'd need at least 95% success rate on lookups for this to be worth implementing as a primary flow rather than a "nice to have" helper.