Sage 100 ProvideX Error Codes Reference
This reference lists the ProvideX run-time errors that appear in Sage 100 (100 ERP and 100cloud, 2019 to 2025) with the exact message text, the usual Sage 100 cause and the first check to run. It also covers the return values of Business Object Interface (BOI) methods.
| Error | ProvideX message text | Typical Sage 100 cause | First check |
|---|---|---|---|
Error #0 | Record/file busy | Another user, a posting update, a Visual Integrator job or an external process (antivirus, backup) holds a lock on the data file or record. | Library Master > Utilities > Master Console to see who is in the company and task; confirm antivirus and backup exclusions for the MAS90 folder. |
Error #1 | Logical END-OF-RECORD reached | Combined data written exceeds the file's maximum record length, usually a third-party enhancement or an import writing more data than the layout allows. | Note the program in the dialog; check whether it belongs to an enhancement; test the same step with customizations removed. |
Error #2 | END-OF-FILE on read or File full on write | A program read past the last record, or a data file reached its size limit on write. | Check the file named in the message in Data File Display and Maintenance; check free disk space on the server; run Rebuild Key Files for the file. |
Error #10 | Illegal pathname specified | Invalid path in a data location, Paperless Office path, export path or report output path (too long, invalid characters). | Check the path set in the task or in Company Maintenance; test with a short local path. |
Error #11 | Record not found or Duplicate key on write | Missing master record behind a transaction (customer, item, GL account) or a duplicate key during import or posting. | Look up the key in Data File Display and Maintenance; for imports, check the VI job for duplicate keys; run Rebuild Key Files if the index is suspect. |
Error #12 | File does not exist (or already exists) | Data file missing: module not set up for this company, company not converted after an upgrade, wrong data location, or no rights to the MAS_XXX folder. | Read the file name in the message; confirm it exists under MAS90\MAS_XXX; check Company Maintenance for module setup and conversion; check folder permissions. |
Error #13 | File access mode invalid | A program tried to write to a file opened for read only, or a read-only attribute is set on the file or folder. | Check file attributes and share permissions on the data folder; check whether the user's role allows the task. |
Error #14 | Invalid I/O request for file state | A program used a channel that is closed or not open in the expected mode, often in a customization or enhancement after an update. | Note the program and line; reproduce with customizations bypassed; check enhancement compatibility with your product update. |
Error #16 | File/Disc is full | Disk full or user quota reached on the server or the workstation temp location. | Check free space on the drive holding MAS90 and the user's temp folder. |
Error #17 | Invalid file type or contents | Data file damaged or not in the expected format. | Run Rebuild Key Files on the file; if that fails, restore the file from backup and re-enter work since then. |
Error #20 | Syntax error | Invalid ProvideX statement in a customization, enhancement or a damaged program. | Note program and line; test with customizations removed; contact the enhancement developer with the program name. |
Error #26 | Variable type invalid | String value passed where a number is expected or the reverse, often from BOI, VI or a customization. | Check the field types in the import or script; string fields end in $ in Sage 100 business objects. |
Error #29 | Invalid Mnemonic or position specification | Printing or screen positioning problem, often a printer or form setting. | Print to a different printer or to preview; check the form or report settings in the task. |
Error #40 | Divide check or numeric overflow | Division by zero or overflow, for example a zero unit of measure conversion factor or a zero quantity in a costing calculation. | Check the item, UM conversion and quantity on the line being processed. |
Error #41 | Invalid integer encountered (range error or non-integer) | A value outside the allowed range or not an integer where one is required. | Check the record or import value being processed when the error appears. |
Error #42 | Subscript out of range/Invalid subscript | Array index beyond its size, usually in program logic of an enhancement or customization. | Note the program and line; report it to the developer of that program. |
Error #43 | Format mask invalid | A numeric value is larger than the format mask that displays or prints it: bad imported data, an extreme quantity or amount, or a Custom Office or report mask too small. | Find the record with the unusually large value; check the mask on the panel or report field; check the import source. |
Error #46 | Length of string invalid | A string is too long for the operation, for example a key value longer than the key length in an import. | Check field lengths in the source data against the Sage 100 field length. |
Error #47 | Substring reference out of string | A program referenced a substring past the end of a string, often in customizations reading fixed positions. | Note the program and line; test with customizations removed. |
Error #65 | Window element does not exist or already exists | Custom Office panel modification no longer matches the standard panel (after an update), or a UDF on a panel is missing from the dictionary. | An asterisk in the title bar means a customized panel. Run *ESC from File > Run and repeat the step: if the error stops, fix or recreate the panel. |
Error #88 | Invalid/unknown property name | A script, BOI program or enhancement calls a property or method that does not exist on the object, or passes wrong parameters: version mismatch or a removed UDF. | Check the property name in the script; confirm UDFs exist in User-Defined Field and Table Maintenance; confirm the enhancement version. |
Error #200 | No single fixed meaning: read the program and line in the dialog | Seen most often with report and form programs such as SY_ReportCommon.pvc, where printer, form or Crystal setup is the usual trigger. | Record program name and line from the dialog and search the Sage Knowledgebase with both; test the report with a different printer and with the standard form. |
BOI return 1 | Method succeeded | Normal result of nSetValue, nWrite, nSetKey on an existing record and similar calls. | Nothing to fix. |
BOI return 0 | Method failed | Validation failed, record locked, missing rights or wrong key. | Read sLastErrorMsg on the same object right after the failing call. |
BOI return -1 | Method succeeded with a warning | Value accepted but Sage 100 raised a warning, for example a credit or inventory warning. | Read sLastErrorMsg to log the warning text; decide whether your integration should continue. |
Message text is taken from the PxPlus (ProvideX successor) error code list. The Sage 100 cause and first check columns describe common patterns; always read the program name and line in the dialog first.
Stuck on a Sage 100 error?
Send us the error number, program and line from the dialog and we will tell you where to look first.
Optional. The tool and every export work without this. No spam.
How to use it
Type the error number or a word from the message into the search box. Read the meaning column first: ProvideX messages are short but precise, and they tell you whether the problem is a lock, a missing file, bad data or program logic. The cause column lists what usually triggers that error in Sage 100, and the first check column is the cheapest test to confirm it. Export the table to Excel if you want to keep a log of errors per company and how you fixed them.
- Lock errors (0) are usually people or processes, not damage.
- File errors (2, 10, 12, 13, 16, 17) point to paths, permissions, disk space or data files.
- Program errors (14, 20, 26, 42, 47, 65, 88) point to customizations or enhancements.
Reading the error dialog
A Sage 100 error dialog gives three facts: the error number, the program (for example SY_ReportCommon.pvc, IM_ItemInquiry_ui or _WINPROC.GRD) and the statement line. The program name tells you the module and whether it is a standard Sage program or a third-party one: enhancement programs usually carry the developer's prefix or sit in a separate folder. Write all three down before you click OK. When you search the Sage Knowledgebase or Sage City, search for the error number together with the program name; the number alone returns hundreds of unrelated threads. If the error mentions a data file such as AR_Customer.M4T, the problem sits with that file, not with the program.
- Error number: what kind of failure.
- Program: which module or enhancement raised it.
- Line: lets the developer find the exact statement.
Worked example: Error 65 on Sales Order Entry
A user opens Sales Order Entry after a product update and gets Error 65, Window element does not exist or already exists. The title bar shows an asterisk, which means a Custom Office panel modification is active. Open File > Run, type *ESC and repeat the step: *ESC bypasses the customizer for that session. If the error stops, the panel customization is the cause. Run the Customizer Update Utility in Custom Office, or recreate the modified panel for the new version; for small changes recreating is often faster. If the error continues with *ESC, check UDFs placed on the panel against User-Defined Field and Table Maintenance and check enhancement versions.
Gotchas
Error 0 is not data damage: find the lock before running utilities. Do not run Rebuild Key Files while users are in the company. Error 13 and Error 12 on a file that exists usually point to Windows permissions on the MAS90 share, not to a Sage bug. Error 200 has no single meaning, so always search with the program name and line. For Premium (SQL Server) companies, file-level errors can come from the SQL layer, so check the SQL Server log as well.
Frequently Asked Questions
What does Sage 100 Error 65 mean?
Error 65 is the ProvideX message Window element does not exist or already exists. In Sage 100 it almost always comes from a Custom Office panel modification that no longer matches the standard panel, typically after an update. Run *ESC from File > Run to bypass customizations and repeat the step; if the error disappears, update or recreate the panel.
What is Sage 100 Error 43 Format mask invalid?
Error 43 means a numeric value is too large for the format mask used to display or print it. Look for an unusual value in the record being processed, such as a huge quantity from an import, a cost with too many digits or a mask on a customized panel or report that is too short. Fix the data or widen the mask.
What does Error 12 mean in Sage 100?
Error 12 is File does not exist (or already exists). The message names the file. Common causes are a module not set up for the company, a company that was not converted after an upgrade, a wrong data path or missing Windows permissions on the MAS_XXX folder. Confirm the file exists and the user can reach it.
What does Error 88 Invalid/unknown property name mean?
Error 88 means code asked an object for a property or method it does not have, or passed the wrong parameters. In Sage 100 that is usually a user-defined script, BOI integration or enhancement referring to a UDF that was removed or renamed, or code written for a different version. Check the name and the object.
If you want your team to ask Sage 100 about errors, open orders and data issues in plain English on your own servers, we can set that up.
Related Tools
Sage 100 User-Defined Script Generator (VBScript UDS)
Builds a working Sage 100 Advanced or Premium user-defined script that looks up the customer, copies the credit hold flag into a UDF and optionally stops the save.
Other ERPsSage 100 Business Object Interface (BOI) Sales Order Script Generator
Produces a working PowerShell script that logs in to Sage 100 through BOI, creates a sales order with one line and reports Sage's own error message on failure.
Other ERPsSage 100 Version Upgrade and Data Migration Checklist (2023 to 2025)
A step list for moving Sage 100 Standard, Advanced or Premium to a new major version with a parallel install, covering customizations, reports, integrations and go-live.
Other ERPsSage 100 Table and Module Prefix Reference
Find the Sage 100 module prefix and the commonly used table names for items, customers, vendors, orders and bills of material.
More Other ERPs tools
See all- Sage 100 Year-End Close Checklist (Module Order SO, PO, IM, AR, AP, GL)
- Infor VISUAL Work Order Status and Structure Reference
- Infor VISUAL Manufacturing Scheduling Checklist
- Infor XA (MAPICS) Period End Close Checklist
- Infor VISUAL Database Table Reference
- Infor XA (MAPICS) Application Module Reference
- IBM i Commands for Infor XA Administrators Reference
- Acumatica Generic Inquiry Design Template
- Acumatica Manufacturing Edition Setup Checklist
Keep exploring
Free tools
- Sage 100 Table and Module Prefix ReferenceFind the Sage 100 module prefix and the commonly used table names for items, customers, vendors, orders and bills of material.
- Sage 100 to Cloud Migration AssessmentA 10-question readiness score for companies on Sage 100 deciding when and how to move to a cloud ERP, with recommendations by result band.
- Sage 100 Business Object Interface (BOI) Sales Order Script GeneratorProduces a working PowerShell script that logs in to Sage 100 through BOI, creates a sales order with one line and reports Sage's own error message on failure.
ERP fixes and how-tos
- How to Add AI to Sage 100 and Sage 300 On-PremPrivate AI architecture for on-prem Sage 100 and Sage 300: ODBC or SQL extracts, Sage 300 Web API, Sage 100 BOI, local GPU model, permissions and audit log.
- How to Add User Defined Fields (UDFs) in Sage 100How to add a user defined field in Sage 100 with Custom Office, place it on a panel, and expose it to reports, ODBC and imports, with the usual UDF pitfalls.
- Fix Sage 100 SOTAMAS90 ODBC Connection ErrorsFix Sage 100 ODBC failures on the SOTAMAS90 DSN: 32-bit versus 64-bit driver mismatch, wrong company code, path rights, and external access security.
AI on your ERP
- AI for Sage 100, Grounded in Your MAS90/200 DataPut AI on Sage 100 and the Sage 100 Manufacturing (MRP) data set without sending data to a public model. Private LLMs and agents grounded in your MAS90/200 tables.
- AI for Sage 100 Small Manufacturers: Practical Answers From Work Orders, BOMs and InventoryPractical AI for small manufacturers on Sage 100: ask about work orders, BOMs, stock and shortages in plain English via ODBC or SQL, kept on a small server.
Integrations
- How to add AI agents to Sage 100How to add AI agents to Sage 100: a tool layer over ODBC and the Business Object Interface, approval-gated writes, and on-prem models for MAS 90/200 shops.
- How to use ChatGPT with Sage 100How to use ChatGPT with Sage 100: exports versus live access, custom GPT actions, enterprise data controls, and when a private model is the safer choice.