TL;DR — Quick Summary

Fix Aspel NOI errors generating IMSS movement files for IDSE: invalid NSS enrollments, rejected terminations, wrong SBC on salary changes, and encoding issues.

When processing payroll in Aspel NOI, generating affiliate movements for the IMSS through the IDSE portal is one of the most error-prone steps. Issues with the NSS, CURP, Salary Base of Contribution (SBC), or file encoding can cause IDSE to reject enrollment, termination, or salary modification movements — leaving workers without coverage or generating employer penalties.

The Error

The most common error messages in Aspel NOI when generating IMSS movements for IDSE include:

  • “Error generating IMSS movement file” — appears in the IMSS movement wizard when the employee’s NSS fails the check-digit validation.
  • “Enrollment error: CURP does not match registered NSS” — IDSE rejects the enrollment because the CURP entered in NOI does not match what the IMSS has on file.
  • “Termination error: date outside the allowed period” — the termination date exceeds the 5 allowed business days or falls in an already-closed period.
  • File rejected by IDSE without a clear message — typically caused by UTF-8 encoding instead of ANSI/Windows-1252, or by incorrect fixed-length fields.
  • Duplicate movements when reprocessing an already-submitted payroll period.

Root Cause

Each of these errors has a distinct root cause:

NSS with invalid check digit: The 11-digit NSS uses a modified Luhn algorithm for its last digit. If a number was transcribed incorrectly during data entry, the file generated will fail NOI’s internal validation or be rejected by IDSE.

CURP does not match IMSS records: The IMSS validates the CURP against RENAPO at the time of enrollment. If the employee updated their CURP after affiliation or there was a data-entry error, the enrollment movement will be rejected even if the CURP has the correct format.

Incorrect SBC due to wrong integration factor: The SBC is not the same as the daily wage. It is calculated by multiplying the daily salary by the integration factor, which increases with the employee’s seniority. If NOI has an incorrect seniority or the factor has not been updated, the generated SBC will not match what the IMSS expects.

Termination outside the allowed period: The IMSS accepts terminations up to 5 business days retroactively. If the actual termination date exceeds that window, the movement is rejected and must be processed directly at an IMSS office.

Incorrect file encoding: IDSE expects .txt files in Windows-1252 (ANSI) encoding. Some systems running Windows 10/11 in international mode generate the file in UTF-8, which corrupts special characters (ñ, accented vowels) and causes the portal to reject the entire batch.

Occasional workers missing from the generated batch: Employees marked as “eventuales” (temporary) in NOI follow a different workflow from “permanentes” (permanent). If the contract type is not correctly configured, NOI may omit them when generating the movement batch.

Step-by-Step Solution

Step 1: Verify employer registration and risk class

Go to Configuration > Company > IMSS Data in Aspel NOI. Confirm:

  • Employer registration: exactly 11 alphanumeric characters (example: Y2312345678).
  • Risk class: I, II, III, IV, or V according to the registered economic activity.
  • Fraction: sub-classification of the activity (see your IMSS determination notice).
  • Risk premium: current percentage determined by the IMSS in the latest annual review (January).

If any of these differ from your current determination notice, correct them before generating any movements.

Step 2: Validate NSS and CURP

In the Employee Catalog, select the employee with the error and verify:

  • NSS: 11 digits. The first 2 are the sub-delegation, the next 2 the affiliation year, the next 6 a consecutive number, and the last is the check digit. Use the NSS Verifier on the IMSS Digital portal (imss.gob.mx) to confirm.
  • CURP: 18 characters. Validate on the RENAPO portal (gob.mx/curp). If the worker’s CURP was updated by RENAPO after affiliation, notify the IMSS via the data-modification movement in IDSE.

Step 3: Recalculate SBC with the correct integration factor

Minimum integration factors by seniority (Article 27, LSS):

SeniorityMinimum factor
Less than 1 year1.0493
1 to 3 years1.0658
3 to 4 years1.0767
4 to 5 years1.0822
More than 5 yearsPer company schedule (min. 1.0822)

In NOI, go to Processes > SBC Calculation, select the employee, and verify that the recorded seniority is correct. If there was a salary increase, recalculate the SBC before generating the salary modification movement.

Step 4: Generate the movement file

In Processes > IMSS > Generate Movements:

  1. Select the movement type: Enrollment (1), Termination (2), Salary modification (7), or Re-enrollment (8).
  2. Choose the employee or group of employees.
  3. Confirm the movement date (within 5 business days for enrollments/terminations).
  4. Save the .txt file to an easily accessible path (example: C:\IMSS\Movements\).
  5. Open the file in Notepad and verify that special characters display correctly. If you see strange symbols instead of “ñ” or accented vowels, the file has incorrect encoding.

To force ANSI encoding: If NOI generates the file in UTF-8, open it in Notepad++ and use Encoding > Convert to ANSI before uploading to IDSE.

Step 5: Upload to the IDSE portal

  1. Log in to idse.imss.gob.mx with your e.firma (certificate .cer + key .key + password).
  2. Go to Affiliate Movements > Upload File.
  3. Select the .txt generated by NOI.
  4. Wait for processing (may take several minutes for large batches).
  5. Download the acknowledgment receipt in PDF format. If there are rejections, the acknowledgment will indicate the NSS and the specific reason.

Step 6: Import movements into SUA

  1. Open SUA and go to Workers > Import Movements.
  2. Select the movement file generated by NOI.
  3. If SUA shows “Worker not found”: go to File > Update Employer Base and download the updated issuer from IDSE before retrying the import.
  4. For temporary workers, ensure they are correctly classified in SUA before importing.

Alternative Solution

If IDSE rejects the file due to format issues you cannot resolve in NOI, enter the movement manually on the IDSE portal:

  1. In IDSE go to Affiliate Movements > Online Entry.
  2. Enter the employer registration, employee NSS, movement type, date, and SBC.
  3. IDSE will validate the data in real time and show the exact error if something does not match.
  4. Once accepted, download the acknowledgment and register the movement manually in NOI to keep the system consistent.

Prevention

  • Enter NSS and CURP from official documents: use the IMSS credential and the RENAPO CURP printout — never transcribe from memory.
  • Enable automatic NSS validation in NOI: in Configuration > Payroll Parameters enable “Validate NSS check digit on save.”
  • Update the integration factor every year: after the minimum wage update (January), review the factors in Configuration > IMSS > Integration Factors.
  • Schedule movement generation within the first 3 business days after an enrollment or termination to leave a margin before the 5-day deadline.
  • Never reprocess an already-submitted batch without first canceling it in IDSE and deleting it in NOI.

Temporary workers missing from the generated batch: In the employee catalog, the “Worker Type” field must be set to “Eventual” and the “Validity” field must have the correct contract dates. NOI only generates enrollment/termination movements for temporary workers if the movement date falls within the recorded validity period.

Salary modification error: “SBC below minimum”: The SBC can never be below the current general minimum wage. If a part-time worker has an SBC calculated below the minimum, IDSE will reject the movement. Record the correct number of days worked per week in the catalog.

IDSE rejection due to expired certificate: The employer e.firma is valid for 4 years. If it has expired, renew it at the SAT before attempting to upload any movements to IDSE.

Summary

  • The NSS must have 11 digits with a valid check digit — validate on the IMSS Digital portal before entering in NOI.
  • The CURP must exactly match the RENAPO record — if it was corrected, notify the IMSS before generating the enrollment.
  • The SBC is calculated using the integration factor based on seniority — update it whenever seniority changes or the minimum wage is updated.
  • Movement .txt files for IDSE must be in ANSI/Windows-1252 encoding, not UTF-8.
  • Enrollments and terminations have a 5 business-day window — schedule generation within the first 3 days.
  • Never reprocess a batch without first canceling it in IDSE to avoid duplicates.