💰New Field: estimated_monthly_income in /profile


  • Starting on March 23, 2026, the GET /profile/{identifier} endpoint will return a new field: estimated_monthly_income.
  • This field represents the sum of all invoice amounts for the identifier in the last 30 days, expressed in MXN.
  • When no invoices exist in that period, the field returns null.

⚠️ What Changes

  • New field addedestimated_monthly_income will appear in all /profile responses. It is a BigDecimal value serialized as a string (e.g. "11139.00"), or null.
  • No breaking changes — this is an additive change. Existing fields (personal_info, address, employment_status) remain unchanged.

💡 What This Means for You

  • One simple income output — instead of interpreting multiple invoice records from /invoices, you now get a single estimated monthly income directly in /profile.
  • Calculated from invoices only — this value is derived exclusively from invoice data. It does not use IMSS, ISSSTE, or /employments data.
  • 30-day rolling window — the calculation sums all invoice amounts from the last 30 days. At least 1 invoice must exist in that period; otherwise the value is null.
  • Nullable — if the identifier has no invoices in the last 30 days, expect null. Make sure your integration handles this case.

🧾 Example

If an individual has the following invoices in the last 30 days:

DateAmount
Feb 11$4,839.00
Feb 19$3,300.00
Mar 5$3,000.00

Then the response will include:

{
  "identifier": "CUAI911021MOCRQS09",
  "updated_at": "2026-03-06T10:22:45.893142Z",
  "personal_info": {
    "first_name": "Isis Mariela",
    "last_name": "Cruz Aquino",
    "curp": "CUAI911021MOCRQS09",
    "nss": "03179170729",
    "rfc": "CUAI911021Q11",
    "phone": null,
    "email": null
  },
  "address": {
    "street": "Avenida Siempre Viva 742",
    "neighborhood": "Springfield",
    "municipality": "Delegacion Cualquiera",
    "state": "CIUDAD DE MEXICO",
    "zip_code": "01234"
  },
  "employment_status": "employed",
  "estimated_monthly_income": "11139.00"
}