Individual Information

Computes monthly_income, employment_status and tenure for an individual identified by an 18-char CURP, with the settings you choose: how many months of history to use, which sources, and as of which date. Optionally returns a monthly history: one point-in-time estimate per month.

The values are computed on every request and never stored; GET /profile is not affected. Same access rules as GET /profile: a valid consent and a verification by your company in the last 90 days. This call does not create a verification and is not billed.

With window_months=3 and the other defaults, the values match GET /profile. The default 12-month window gives a broader estimate. All three values are estimates derived from the available data.

get/estimates/{identifier}

Request

Path parameters

identifierstring required
Example:MAPE850312HDFRRR02

The CURP of the individual.

Query parameters

window_months3 | 6 | 9 | 12 | 24
Example:12

Months of history used: invoices, payroll invoices (nóminas), and maximum age of IMSS/ISSSTE data. Windows longer than the available history use whatever history exists.

sources'all' | 'invoices' | 'employments'
Example:all

Data used for all three estimates. invoices: payroll invoices (nóminas) and own billing (ingreso minus egreso). employments: IMSS/ISSSTE records only. all: both.

as_ofstring date
Example:2026-03-31

Computes the estimates as of this date (YYYY-MM-DD, Mexico City time), using only data dated on or before it. Defaults to today. Cannot be in the future, and as_of minus window_months must be within the last 24 months. Invoices are exact for any date; IMSS/ISSSTE records use the salary on the current record, because their past salaries are not kept.

historyboolean
Example:true

When true, adds a history array with one point-in-time estimate per month, going back from the month of as_of, up to 18 months.

Response

Estimates for the identifier.

identifierstring

The CURP of the individual.

computed_atstring date-time

When the estimates were computed (UTC). Not the same as as_of, the date the estimates refer to.

monthly_incomestring decimal nullable

Estimated net monthly income in MXN: the same estimate as estimated_monthly_income in GET /profile, computed with the request's parameters. null when there is not enough data.

income_source'invoices' | 'employment' | 'blended' | 'none'

Where monthly_income comes from: invoices (payroll invoices or own billing), employment (IMSS/ISSSTE salary), blended (both) or none (no estimate).

employment_status'employed' | 'self_employed' | 'unemployed' | 'retired' | 'unknown'

Same values as employment_status in GET /profile. With a past as_of, and in every history month, only employed, self_employed or unknown are returned: the unemployed and retired signals describe today and can't be dated.

tenure'less_than_3_months' | '3_months_plus' | '6_months_plus' | '9_months_plus' | '12_months_plus' nullable

Minimum verifiable job tenure with the current employer, as a floor bucket: same values as tenure in GET /profile, including less_than_3_months (employed, with evidence of the current employer covering less than 3 months, e.g. right after a job change). Resets when the person changes employer. null when the status is not employed or there is no employer-level evidence.

Example response

{
  "identifier": "MAPE850312HDFRRR02",
  "computed_at": "2026-10-14T16:20:05Z",
  "parameters": {
    "window_months": 12,
    "sources": "all",
    "as_of": "2026-03-31",
    "history": true
  },
  "monthly_income": "14250.00",
  "income_source": "invoices",
  "employment_status": "self_employed",
  "tenure": "12_months_plus",
  "history": [
    {
      "month": "2026-03",
      "monthly_income": "14250.00",
      "income_source": "invoices",
      "employment_status": "self_employed"
    }
  ]
}

Changes