Identity verification for Mexico, built for developers.

CURP, INE, RFC, IMSS and more in a single API, straight from the official sources.

a single envelopeSDKs & MCPzero retention
OrigoID symbol
Why OrigoID

The official data is the same. The difference is everything else.

Everyone queries the same government sources. What changes is how we deliver it: storing nothing, one single contract, and built for whoever integrates.

Always-live data
We query the official source on 100% of calls, no cache: the status we return is the one from this very moment, not yesterday's copy. And if one source fails, we go to the next —without you noticing.
cached data that may be stale→real status, live, every time
Zero retention
Storing queries is the industry norm. We don't store the data you query.
data left sitting on a server→no trace, not even logs
One envelope for everything
The same JSON —status, type, data— on every endpoint. Learn the contract once and it works for CURP, INE, RFC, IMSS and more.
one integration per service→one contract for all
Built for developers
SDKs in TypeScript, Python and Go, and an MCP server so your AI agent can verify identity without you writing the integration.
wiring endpoints by hand→SDK + MCP ready
Solutions

A flow ready for your industry.

The same official sources, assembled for the use case you already have. Each flow is a sequence of endpoints with the same envelope.

Mobility and car rental Verify drivers: INE, face match and liveness check. See the flow → Fintech and lending Full KYC: identity, AML lists and address. See the flow →
Services

The exact service you need.

Each service has its own page: what it returns, real code, and a demo where it applies. Same envelope everywhere.

RENAPO Validate CURP Official status live, holder data and RFC in the same call · free demo → SAT Validate RFC SAT registry status and risk level (valid, restricted, not registered) · free demo → INE OCR of INE Data extracted from the photo and the address split into validated fields · real cases → INE Validate INE Lista Nominal status: current, stolen/lost, suspended, not registered · free demo → BIOMETRICS Face match Selfie against the ID photo: 0–100 score and a decision ready for your threshold · free simulator → IMSS IMSS API The three IMSS services compared: what each one answers, what you get and how much it costs → IMSS Employment verification From the CURP: whether they work today, with which employer, base salary and contributed days · optional official PDF → IMSS Contribution weeks The official PDF certificate, the full work history and stability and income signals, with their formula → IMSS NSS lookup The Social Security Number from the CURP, without asking your user for the card → GUIDE Webhooks How you receive the result of IMSS queries, explained step by step and without jargon →
Raw infrastructure · 100% REST API

Integrate in minutes.

Every endpoint returns the same envelope: one clean, predictable JSON structure. Learn it once, integrate fast — your parser is a helper that works for every operation.

Official SDKsTypeScript, Python and Go — published and validated. Full types and examples that work.
MCP server AI AGENTSYour agent can use OrigoID directly: validating a CURP is a tool call.
Public status pageCheck service availability at status.origoid.com, with history. No spin.
valida-curp
import { OrigoidApiClient } from "@origoid/sdk";

const client = new OrigoidApiClient({ apiKey: process.env.ORIGOID_API_KEY });

const result = await client.renapo.validateCurp({
  curp: "TEST900101HDFRRN09",
  generateRfc: true,
});
from origoid import OrigoID

client = OrigoID(api_key=os.environ["ORIGOID_API_KEY"])

result = client.renapo.validate_curp(
    curp="TEST900101HDFRRN09",
    generate_rfc=True,
)
import (
  sdkgo "github.com/origoid/sdk-go"
  "github.com/origoid/sdk-go/client"
  "github.com/origoid/sdk-go/option"
)

c := client.NewClient(option.WithAPIKey(os.Getenv("ORIGOID_API_KEY")))

result, err := c.Renapo.ValidateCurp(context.Background(), &sdkgo.ValidateCurpRequest{
  Curp:        "TEST900101HDFRRN09",
  GenerateRfc: sdkgo.Bool(true),
})
curl -X POST https://api.origoid.com/mex/renapo/v1/curp-validations \
  -H "x-api-key: $ORIGOID_API_KEY" \
  -H "content-type: application/json" \
  -d '{"curp": "TEST900101HDFRRN09", "generateRfc": true}'
Response with the official status
{
  "status": "OK",
  "type": "SUCCESS",
  "data": { "personalInfo": { "givenNames": "JUAN", … } },
  "billable": true
}
Credit model

Your plan is a bag of credits. Each verification uses one.

Like a bag of minutes: you subscribe to a plan, receive credits every month, and each verification you make uses one. No hidden charges.

{ }
Your system asks"is this CURP real?"
OrigoID verifiesagainst the official source
−1
One credit is usedonly if you get a useful result

Very few queries use more than one credit — the per-endpoint detail lives in the documentation ↗

They renew monthly · with your plan Ran out? · extras cost the same No useful result · no charge
Pricing

Clear pricing. No surprises.

Pay per credit. Pick the plan that fits your volume and grow when you need to. Extra credits are billed at your plan's rate.

Start free, no card.

Try any endpoint in production with courtesy credits, no strings attached. Access is enabled after a brief validation of your company.

Request access

Kilo

$800 MXN + VAT/mo
600 credits/mo
$1.33 per credit
Contact us

Mega

$5,000 MXN + VAT/mo
5,000 credits/mo
$1.00 per credit
Contact us

Giga

$13,750 MXN + VAT/mo
25,000 credits/mo
$0.55 per credit
Contact us

Tera

$26,250 MXN + VAT/mo
75,000 credits/mo
$0.35 per credit
Contact us

Peta

$56,000 MXN + VAT/mo
200,000 credits/mo
$0.28 per credit
Contact us
Exa — for high volume

More than 200,000 verifications a month? Volume pricing and terms built for you.

Let's talk →

Your verifications are measured in kilo → mega → giga → tera → peta. So are our plans.

All access — including the trial — goes through a brief validation of your company.

What will it cost me?
5,000 verifications/mo
Megarecommended plan
$5,000MXN + VAT/mo
$1.00per standard verification
Security

A tunnel, not a warehouse.

Your data passes through OrigoID only to be validated against the official source. We don't store the data you query. Your users' privacy is by design, not a promise.

⊘
No data retentionThe CURP, ID or face you send is used only to validate and discarded on response. Without storing the data — the transactionId identifies the operation without exposing personal data.
⬢
Active redundancyInfrastructure across multiple regions, all serving at once: if one fails, another is already answering. And the same rule applies everywhere: zero retention — your data does not reside on any server, in Mexico or anywhere else.
⛨
Encryption and isolationAll traffic travels over TLS 1.3. Each service runs isolated with its own minimal access, and your API key authenticates every call and can be rotated whenever you need.
§
Aligned with the LFPDPPPBy not keeping your users' data, you reduce your own compliance surface under the law. Built for regulated flows: KYC, anti-money-laundering (AML) and employment verification.