RiyalPlus — Error Reference
Every error in RiyalPlus carries a code in the form RP-XXXX. If you see one on screen, find it below for what it means and what to do.
A quick rule of thumb: codes that ask you to fix or change something are usually ones you can resolve yourself; codes that describe a system issue or say contact support are handled by our team. Payment and billing problems are always handled by the team directly — never the chat assistant. Reach the team from the Support page in the sidebar or at support@riyalplus.ai.
Uploading and reading your trial balance
RP-1002 — Unsupported file type · shown as: "Unsupported file type." The file isn't a format RiyalPlus can read. Upload your trial balance as an XLSX spreadsheet or a PDF and try again.
RP-1003 — File too large · shown as: "File exceeds 25 MB limit." A trial-balance upload can be up to 25 MB. Remove rows that aren't accounts (summaries, blank rows) or split the file, then upload again.
RP-1006 — No data rows · shown as: "File contains no data rows." Re-export the trial balance from your accounting system and upload the new file.
RP-1011 — Rate limited · shown as: "Rate limited — please wait a moment and try again." Too many requests in a short time. Wait a minute and try again.
RP-1020 — Reading the trial balance didn't complete · shown as: "TB ingest could not produce a complete reading of this file — please try again, or contact support if it fails the same way." Every attempt to read the file was made and none produced a complete, verified result. Sometimes that is a temporary connection problem, in which case a retry clears it. If the same file fails the same way twice, it is the file's layout, not a glitch — send it to support rather than retrying. Any points captured for the failed run are refunded automatically.
RP-1021 — Unreadable ingestion response · shown as: "TB ingest returned an unreadable response — please try again." A temporary glitch reading the result. Try again; a failed run on our side is auto-refunded.
RP-1022 — Accounting discrepancies found · shown as: "TB ingest validation found accounting-identity discrepancies — review the warnings." The figures don't fully reconcile (for example, debits and credits don't balance). Check the flagged accounts in your source file, correct them, and re-ingest.
RP-1023 — Couldn't validate the file · shown as: "TB ingest validation could not run any meaningful check on this file." Confirm it's a complete trial balance with account codes and balance columns, then re-upload.
RP-1024 — Validation failed · shown as: "TB ingest validation failed — duplicate codes or missing required fields." Fix the duplicate account codes or gaps in your source file and upload again.
RP-1025 — Request rejected by the AI service · shown as: "AI service rejected the request — this is not a transient error and retrying will not help." Contact support with the case so the team can look into it.
RP-1027 — Couldn't read the spreadsheet · shown as: "Could not read the uploaded spreadsheet — please re-export as XLSX or upload a PDF instead." Re-export it as XLSX, or upload the trial balance as a PDF, and try again.
RP-1028 — Conversion timed out · shown as: "Document conversion timed out — please try again or upload the file as PDF." Try again, or upload it as a PDF.
RP-1029 — Trial balance too large · shown as: "The trial balance is too large to process…" Split it into multiple files, or remove rows that don't represent accounts, and upload again.
RP-1030 — Choose a sheet · shown as: "Sheet selection required for multi-sheet workbooks." Your workbook has more than one sheet. Pick the sheet that holds the trial balance when prompted, and ingestion continues.
RP-1031 — Not enough content · shown as: "File content is insufficient for trial balance extraction." Re-upload a complete trial balance file.
RP-1032 — Extraction timed out · shown as: "Trial balance extraction exceeded the time limit…" Try a smaller file; if it keeps timing out, contact support.
RP-1033 — Too few rows · shown as: "File has too few data rows to be a trial balance…" Re-upload the complete file.
RP-1034 — No balance columns · shown as: "No numeric balance columns were detected…" Make sure the debit/credit or balance columns are present and re-upload.
RP-1035 — Too large after filtering · shown as: "File is too large to process after filtering…" Remove summary rows and re-upload, or contact support.
RP-1036 — Corrections invalid · shown as: "TB corrections invalid — unknown field, account not found, or unparseable value." Check the field and value you edited and try again.
RP-1037 — Corrections locked · shown as: "TB corrections rejected — case has already been processed past extraction and cannot be edited." The case moved past the editable stage. Unlock the step if it's only approved, or start a fresh case for the period.
RP-1038 — Corrections out of date · shown as: "TB corrections conflict — data has been updated since last load. Refresh and try again." Refresh the page and re-apply your correction.
RP-1039 — Couldn't save corrections · shown as: "TB corrections could not be saved — storage write failed…" A temporary save problem; no changes were applied. Try again; contact support if it persists.
RP-1040 — Low extraction quality · shown as: "Extraction stopped — too many rows share the same account code with conflicting values. If this file lists more than one currency, re-export it as the SAR trial balance only. Otherwise, merge the duplicate account-code rows and re-upload." The file was read but with conflicting account codes. Review and correct the partial results, or re-upload a cleaner file.
RP-1042 — Old Excel format · shown as: "The .xls (Excel 97-2003) format is not currently supported…" Open the file in Excel, use "Save As" to create an .xlsx, and upload that.
RP-1069 — Photo unreadable or too small · shown as: "This file could not be read as a picture, or is too small to read reliably. Upload a larger, closer capture, or a spreadsheet or PDF instead." A pre-debit check on a photographed or scanned trial balance (JPG/PNG only) — nothing is charged for a refused upload. Re-upload a clearer, closer photo, or a spreadsheet or PDF.
RP-1070 — Photo far larger than a trial balance · shown as: "This image is far larger than a trial-balance page. Upload a smaller capture, or a spreadsheet or PDF instead." The same pre-debit check as RP-1069, split into its own code because the fix is the opposite one — a smaller capture, not a larger one. A page this size is not a trial-balance photo (a scanned poster, a phone panorama, an oddly large export); nothing is charged.
RP-3132 — File doesn't match this case's company or period · shown as: "This file doesn't match the company or period this case is bound to. A different filing belongs in its own case — start a new one for it." A trial balance is bound to its case's own company and period the moment the first reading succeeds; a later upload's case no longer matches (usually because Setup was changed through a reset). Open a new case for the different company or period — this one keeps its original filing.
RP-3133 — Re-upload shares too few accounts · shown as: "This file shares too few account numbers with the trial balance already on this case, which usually means it belongs to a different company. Start a new case for it, or contact support if this is genuinely the same filing re-exported from different software." Every re-upload is compared against the account numbers the case already holds; fewer than half in common usually means a different company's file was uploaded by mistake. Start a new case for it. If this genuinely is the same filing, just re-exported from different accounting software, contact support — account codes can differ enough between exports to trip this check.
RP-3134 — Re-upload allowance used up · shown as: "This case has had its three corrected re-uploads. A further trial balance needs a new case." A case gets three free corrected re-uploads after its first trial balance; this one has used all three. A further correction needs a new case at the ordinary price.
Commercial-registry lookup
RP-1044 — Registry lookup unavailable · shown as: "The commercial-registry lookup service is unavailable right now. You can fill the fields manually or retry later." The connection to the commercial registry is down. Enter the entity's details manually, or retry later — nothing else is blocked.
RP-1045 — CR record not found · shown as: "No commercial-registry record was found for this CR number. Check the number, or fill the fields manually." Double-check the CR number for typos; if it's correct, enter the details manually and mention it to support.
Mapping your accounts
RP-2001 — Mapping failed · shown as: "Account mapping failed — please try again." A temporary problem suggesting the account mapping. Try again; contact support if it persists.
RP-3022 — Couldn't save mapping review · shown as: "Your mapping review could not be saved — please try again." A temporary save problem — your in-progress decisions weren't lost, just not flushed. Try again; contact support if it persists.
RP-3128 — Account on the wrong side of the line · shown as: "This account cannot sit on this line — its balance is on the other side. Move it to the one line its own balance allows." An account's own balance (debit or credit) decides which stock or cost-of-sales line it can go on — this never depends on any "inventory method." Open the Mapping step, find the named account, and move it to the line the message names, then press Continue again.
Points, payments, and invoices
These are handled by our team directly. The chat assistant and help articles don't process payments, refunds, or amounts — if you hit one of these and it doesn't self-resolve, start a support conversation or email support@riyalplus.ai.
RP-2033 — Not enough points · shown as: "You don't have enough points for this. Top up your balance to continue." The action's price exceeds your balance, so nothing was charged. Buy points under Billing › Buy points, then retry.
RP-2010 — Payment couldn't be set up · shown as: "Payment processor could not create a payment request." The top-up payment couldn't be started. Wait a moment and try again; if it keeps failing, contact support.
RP-2011 — Payment couldn't be verified · shown as: "Payment verification with payment processor failed." Confirmation of your payment didn't come through. Contact support so the team can check the status before you try again.
RP-2015 — Invoice not generated · shown as: "Invoice generation failed. The payment was successful; the invoice will be issued by support." Your payment went through — only the invoice document didn't generate. The team will issue it.
RP-2024 — Invoice not found · shown as: "Invoice not found." Check your invoice list under Billing; if one you expected is missing, contact support.
RP-2030 — Refund couldn't complete · shown as: "Refund failed. The credit note is recorded; our team will resolve the refund." The refund record exists but couldn't finish automatically. The team will resolve it.
RP-3055 — Already exported, refund is manual · shown as: "This filing's pack has already been exported — the charge can no longer be refunded automatically. Contact support." Un-filing normally returns the points automatically, but only until you download the filing's pack. Once the documents have been exported the automatic refund closes. Contact support with the filing and the team will handle it.
Team and roles
RP-2026 — No free seats · shown as: "All firm seats are in use…" Every member seat on your account is in use — two are included, plus any an Admin has added. An Admin can add a seat from Team › Buy a seat (seats are free) or remove a member, then add the new one. Past 25 seats, contact support.
RP-2029 — Team needs an admin · shown as: "A firm must keep at least one admin…" You can't remove or demote the last Admin. Promote another member to Admin first, then retry.
RP-2031 — Read-only access · shown as: "Your role is view-only. Ask a firm admin to grant you write access to perform this action." Your access on this account is view-only, so this action isn't available to you. Ask an Admin to perform it. Team roles are Admin and Member, and both can make changes, so you should rarely see this.
RP-2032 — Not a team member · shown as: "That person is not a member of this account, so the case can't be assigned to them." The person you tried to assign to a client isn't an accepted member of the account. Invite them first, or pick an existing member.
RP-2034 — Admin-only action · shown as: "Only the account admin can do this. Ask your firm admin to perform this action." Billing, seat purchases, and member management require the Admin role. Ask your account's Admin.
RP-2035 — PIN not accepted · shown as: "That PIN is incorrect…" The 6-digit PIN for the selected profile didn't match. Re-enter it, or ask your account admin to reset it from Team.
RP-2036 — Profile temporarily locked · shown as: "Too many incorrect PIN attempts…" After several wrong PINs the profile locks for a short cool-down. Wait and retry, or ask your account admin to reset the PIN — a reset clears the lock immediately.
RP-2037 — Filing locked by the system · shown as: "This filing was not locked by you…" The declaration was locked by the 7-day post-computation timer (or by an administrator), not by you, so it cannot be un-filed from the Review step. Contact support with the case reference; a reopen is recorded on the case.
RP-2038 — Filing already exported · shown as: "A PDF of this filing has already been exported…" Once a PDF (Form 10 or the financial statements) has been exported, the figures behind it may already be with ZATCA, so the filing can no longer be un-filed from the app — the Un-file button is withheld and a direct call is refused. Contact support with the case reference; a reopen is a support action with a record. Note that un-filing is admin-only: a team member sees the "admin only" line instead of the button (RP-2034 on a direct call).
Notification preferences
RP-3020 — Couldn't save preferences · shown as: "Notification preferences could not be saved — unknown setting." Check the setting you changed and try again.
RP-3021 — Unsubscribe link expired · shown as: "This unsubscribe link is invalid or has expired." Manage email preferences from your account settings instead.
Creating and managing cases
RP-3028 — Select a filing entity · shown as: "Select which filing entity this case is for." Your account has more than one filing entity, and RiyalPlus never guesses which company a filing belongs to. Pick the entity and continue.
RP-3029 — Product not available · shown as: "One of the selected products isn't available — adjust your selection and try again." The selected product code is unknown, inactive, or not offered in this release. Correct the selection.
RP-3030 — Case can't be deleted · shown as: "This case has an issued invoice and can't be deleted — archive it instead." A case with billing records behind it is archive-only.
RP-3031 — Case is a parent · shown as: "This case is the basis for a later filing — delete that filing first." A later sequential filing carries forward from this case; remove or re-link the successor first.
RP-3032 — Company can't be deleted · shown as: "This company has filings against it and can't be deleted — archive it instead." A filing entity with cases behind it is archive-only.
RP-3004 — Case past editable stage · shown as: "Case is past the editable phase — ECI pinning cannot be changed." The company information pinned to this case can't be changed at this stage. To use updated company data, create a new case for the period.
RP-3005 — Linkage problem · shown as: "Case linkage violation — parent filing is invalid for this successor." The prior-year case this filing links to isn't valid (for example, it isn't computed, or the periods overlap). Check the parent case, or start without linking.
RP-3006 — Sequential needs a parent · shown as: "filing_mode SEQUENTIAL requires parent_case_id." Choose the prior case to link to, or pick a non-sequential filing type.
RP-3019 — Setup locked · shown as: "Case setup can no longer be edited — a trial balance has already been uploaded." Reset the case to change setup, or start a new case for the period.
RP-3038 — Filing mode locked · shown as: "Filing mode cannot be changed for this case." Start a new case if you need a different filing mode.
RP-3050 — Period dates invalid · shown as: "The fiscal period end date must be after the start date." Check the period dates — for a full fiscal year the end date is usually December 31.
Computing your declaration
RP-3001 — Ownership doesn't total 100% · shown as: "Ownership percentages must sum to 100%." Correct the percentages on the filing entity so they total 100%, then recompute.
RP-3008 — Opening balances don't balance · shown as: "Opening balance sheet does not balance." Correct the figures so opening assets equal liabilities plus equity.
RP-3009 — Opening balances needed · shown as: "Opening balance capture required for FIRST_TIME_IN_APP filing mode." Enter the opening balances (last year's closing balance sheet) using the opening-balance form, then compute.
RP-3010 — Inventory method locked · shown as: "Inventory method cannot be changed after the case is computed." To change it, start a new case for the period.
RP-3023 — Regulatory inputs didn't save · shown as: "Your regulatory inputs could not be saved — please try again." A temporary save problem. Try again; contact support if it persists.
RP-3036 — Certification required · shown as: "Answer the certification questions before computing — complete the Certification step and try again." Open the Certification step, answer the questions, and recompute.
RP-3037 — Couldn't save certification answers · shown as: "Your certification answers could not be saved — please try again." A temporary save problem. Try again; contact support if it persists.
RP-3039 — Step locked · shown as: "This step is approved and locked — unlock it to edit." Unlock the step, make the change, and re-run the downstream steps.
RP-3047 — Inventory method is derived, not set · shown as: "The inventory method can no longer be set directly — it is derived automatically from your approved account mappings." To change how inventory is treated, edit the mappings of the inventory accounts (opening/closing stock and inventory lines) instead.
RP-3129 — Cost of sales came out negative · shown as: "Cost of sales came out negative — these accounts caused it. Fix their mapping and try again; nothing has been computed or charged." An impossible cost-of-sales figure is refused before any arithmetic runs, so nothing is computed and nothing is charged. Go back to Mapping, fix the accounts the message names, and compute again.
RP-3131 — Investment-fund questions unanswered · shown as: "Your investments line carries a balance and the investment-fund questions are not fully answered. Answer the investment-fund questions on the Certification step before continuing." When your sorted accounts put money on the in-Kingdom non-trading investments line, the investment-fund questions on the Certification step (up to five, depending on the account) must be answered for EACH account on that line before the case can compute — nothing is computed and nothing is charged until every account is answered. Open the Certification step, answer the investment-fund questions named for the account named, save, and compute again.
RP-3052 — Run compute first · shown as: "Run compute first. What-if simulation needs an existing computed result and checkpoint to replay against." Open the case's compute step and run Compute at least once — the what-if simulator replays deltas against that computed result and checkpoint, so it has nothing to work from until then.
RP-3053 — No fiscal period set · shown as: "This filing has no fiscal period. Set the period start and end dates on the Setup step before computing…" Open the case's Setup step and enter both the period start and end dates, then compute again. The filing deadline, the late-payment estimate and the financial statements are all derived from them, so a filing without them cannot be produced correctly.
RP-1052 — Assessment notice file unsupported · shown as: "The notice must be a PDF (scanned or text) under 20 MB. Upload the notice as issued by ZATCA." Images and Office files are not read; export them to PDF first.
RP-1053 — No adjustment items found in the notice · shown as: "The extraction read the notice but found no adjustment items. Upload a clearer scan or the text version and ex…" A blank result is delivered work (the model ran); the unlock is not refunded, but re-extraction on the same notice container is free. The unlock is NOT refunded: the model call succeeded and consumed real tokens; the remedy is a free re-extraction on the same unlocked container.
RP-1054 — Assessment extraction failed · shown as: "The extraction could not be completed on our side. The unlock has been refunded; try again later." A model or service failure between the charge and the delivered value is always refunded.
RP-1061 — Contract file unsupported · shown as: "Each contract must be a PDF under 20 MB." Images and Office files are not read; export them to PDF first.
RP-1062 — Contract exceeds the page cap · shown as: "A single contract file may hold at most 60 pages. Split a bundle into its individual contracts and upload each…" The price is per contract document; the cap keeps one unit from carrying a whole bundle.
RP-1063 — Contract extraction failed · shown as: "This document could not be processed on our side and its charge has been refunded. Re-upload it later." Per-document failures refund that document's points only.
RP-1064 — No disclosure fields found · shown as: "The document was read but none of the disclosure fields could be found, so its points have been returned. Enter them manually in Review at no charge. A clearer copy has to be uploaded as a new batch, which is priced and quo…" A blank result refunds the document's points (Adam's decision B, 2026-09-15) — enter the fields manually, or upload a clearer copy, priced again.
RP-1066 — WHT payment-document type unsupported · shown as: "Extract from a document reads PDF, JPG, JPEG and PNG files only. Choose one of these types — nothing has been charged." Refused before any charge — re-upload the payment document as one of the four supported types.
RP-1067 — WHT payment extraction failed · shown as: "The extraction could not be completed on our side and the points for this document have been returned. Try again in a moment." Covers both a model-service outage and a reply we could not read as an answer — either way the overage charge for that document is refunded automatically; try the same file again.
RP-1068 — WHT payment extraction found no fields · shown as: "The document was read but none of the payment fields could be found. Enter them manually at no charge — the points for this extraction have been returned. A clearer copy can be uploaded…" Unlike RP-1064's contract-disclosure sibling, a blank WHT payment read IS refunded (Adam's decision B, 2026-09-15) — enter the fields manually, or upload a clearer copy, priced the same way.
RP-3065 — Assessment case not found · shown as: "This assessment case does not exist or belongs to another account." Open it from the assessment workbench list.
RP-3066 — Upload the notice before extracting · shown as: "No assessment notice has been uploaded to this case yet." Upload the ZATCA notice PDF on the Notice step, then unlock and extract.
RP-3067 — Notice already extracted · shown as: "This notice has already been extracted. Upload an amended notice as a new document to extract again." Uploads are immutable; a corrected notice is a new document on the same case.
RP-3068 — Confirm every cited article before drafting the letter · shown as: "One or more contested items still carry an unconfirmed cited article. Confirm or correct each one on the Items…" Extracted article numbers are model output with no controlled vocabulary to validate against; a human confirmation is the control.
RP-3069 — Lifecycle transition not allowed · shown as: "The case cannot move from its current stage to the requested one." Follow the stages in order on the Timeline step.
RP-3070 — Items are locked after the objection is filed · shown as: "Item decisions cannot change once the objection is recorded as filed." Record a new stage (ZATCA review, settlement request) instead; the filed items are evidence now.
RP-3071 — Income-tax payment gate not computable · shown as: "RiyalPlus does not compute the objected-portion payment percentage for income-tax assessments: the governing i…" Only the zakat band (MR 1007 Art. 116(2)) is computed; showing a zakat percentage beside an income-tax number could make an objection inadmissible. This code never arrives as a failed request: it travels inside the timeline's payment-band payload and shows on the page, so support will see it in a screenshot, not in a log of a 4xx.
RP-3072 — Notice date required · shown as: "Enter the notice date (Gregorian) to compute the objection windows. Convert a Hijri date on Umm al-Qura before…" Every statutory window in the workbench counts from the notice date.
RP-3073 — Appeal not available at this amount · shown as: "An appeal to the appellate committee is not available where the payable amount does not exceed SAR 50,000; the…" Recorded from the corpus's rule; check the amount on the notice.
RP-3074 — Evidence file unsupported · shown as: "Evidence must be a PDF, PNG or JPG under 20 MB." Export other formats to PDF first.
RP-3173 — Stored dispute file not held · shown as: "We no longer hold this file. Contact support and quote this dispute." Shown under one notice or evidence file in the objection workbench when Open finds no such file in this dispute, or storage no longer holds it. The notice and every evidence file are kept for as long as the account exists, so this is our fault, never the filer's: ask for the dispute's assessment number and the file's name, and escalate to engineering with them.
RP-3174 — File store not reachable · shown as: "We could not reach the file store just now. Try again in a moment." Shown under a notice or evidence file in the objection workbench, or on a draft letter's download, when the store did not answer (a refused connection, a timeout, an error from the bucket). It is also the answer when a notice or an evidence file is uploaded, or a draft letter is built, and the store did not take the file: nothing was saved, so ask the filer to upload it (or build the letter) again. The file is not lost: ask the filer to try again in a minute; if it keeps failing, escalate to engineering with the dispute's assessment number and the time. Nothing of the store's own error (its address, bucket or the file's key) is ever shown; the log row says storage_unreachable. RP-3175 — A notification could not be saved · shown as: "A notification could not be saved. The action itself was completed." Internal (tier 3), never shown to a filer: a notice in the notification centre could not be written while the action that makes it (a top-up, a team change, a support request or a reply) was saved. The event names the notice kind. Nothing is lost for the filer; if it repeats, escalate to engineering with the kind.
RP-3176 — The hourly notification run failed for one account · shown as: "The hourly notification run could not finish for one account." Internal (tier 3), never shown to a filer: the hourly run that makes an account's notices and its morning e-mail stopped for that account and went on with the others. The next hour tries again. If it repeats for the same account, escalate to engineering with the account.
RP-3111 — Disclosure batch not found · shown as: "This batch does not exist or belongs to another account." Open it from the contract disclosure list.
RP-3112 — Batch is no longer a draft · shown as: "Documents can be added or removed only while the batch is a draft." Create a new batch for additional contracts.
RP-3113 — Contract document not found · shown as: "This document is not in the batch." Open the batch and pick the document from its list.
RP-3114 — Review incomplete — export blocked · shown as: "Every document must be confirmed on the Review step before the disclosure dataset can be exported." The dataset carries joint-liability exposure; nothing leaves the tool unconfirmed by a person.
RP-3115 — Disclosure fields invalid · shown as: "Check the highlighted fields: each party needs a name and address, the value must be a non-negative amount, an…" These are the fields the Income Tax Law lists for contract information.
RP-3116 — Signature date required · shown as: "Enter the contract's signature date as a Gregorian date to compute the reporting window. Convert a Hijri date…" The reporting window runs from signature.
RP-3126 — Batch scope is customer contracts · shown as: "This tool reads contracts with suppliers and other vendors. A batch of contracts with your own customers cannot be processed here, because their contents would be sent for automated reading outside the Kingdom. Choose "vendor" if these are supplier contracts." Contract disclosure only accepts your own vendor/supplier contracts; a batch answered "customer" is refused at creation — no row is stored, nothing is charged, and nothing reaches the model. Start a new batch and answer "vendor" if these are supplier contracts.
RP-1055 — Asset register file unreadable · shown as: "The asset register file could not be read. Upload an .xlsx workbook (not .xls, PDF or CSV) under 5 MB." Download our template from the register page and paste your rows into it if your export uses a different layout.
RP-1056 — Asset register columns unmapped · shown as: "Some required columns could not be matched (asset id, description, cost, acquisition date, pool). Map them on…" The importer guesses columns from their headers; when it cannot, you choose the mapping once and it is saved with the version.
RP-1057 — Asset register rows invalid · shown as: "Some rows are invalid (negative cost, disposal before acquisition, unknown pool). Fix the listed rows and impo…" The message lists the first rows and the reason for each.
RP-1058 — Employee roster file unreadable · shown as: "The roster file could not be read. Upload the .xlsx template from the provisions page." Each provisions leg has its own template with the columns the calculator needs.
RP-1059 — Roster columns unmapped · shown as: "Some required columns could not be matched. Map them on the preview and continue." Column names are matched case-insensitively in Arabic and English; unmatched ones are mapped by you once.
RP-1060 — Roster rows invalid · shown as: "Some rows are invalid (missing hire date, non-positive wage, termination before hire). Fix the listed rows and…" The message lists the first rows and the reason for each.
RP-3080 — Invalid fiscal-year window · shown as: "The prior and current fiscal-year windows must each be a valid date range, and the current window must follow…" Pick the two fiscal years you want to compare; the defaults come from the entity's fiscal-year end.
RP-3081 — Entity profile incomplete for the regulatory filter · shown as: "The entity profile is missing the facts the filter needs (tax mode, fiscal-year end). Complete the profile and…" The report filters the register by the entity's tax mode and period; without them it cannot say what applies.
RP-3082 — Regulatory-delta report not found · shown as: "This report does not exist or belongs to another account." Return to the Tools hub and open the report from its list.
RP-3083 — Register not found · shown as: "This register does not exist or belongs to another account." Return to the tool's landing page and open the register from its list.
RP-3084 — Prior year schedule needed · shown as: "The tax pools carry forward year to year: compute the earlier fiscal year's schedule first, or enter opening p…" Article 17(e) computes each year's instalment from the prior year's remaining value.
RP-3085 — Depreciation table not in force for this period · shown as: "The Article 17 pool table RiyalPlus holds is verified from 2018-01-01 (Income Tax Law Art. 17(e) as amended by Royal Decree M/131). This fiscal period ends before that date and lies outside the verified window, so a schedule cannot be computed for it." The table is versioned with an effective floor so a period before the amendment is never computed on the wrong wording.
RP-3086 — Push refused: case belongs to another entity · shown as: "This schedule can only be pushed into a Zakat & tax case of the same filing entity." Pick a case whose company profile matches the register's entity.
RP-3087 — Invalid disposal · shown as: "A disposal must have a date on or after acquisition and non-negative proceeds." Fix the disposal row and recompute.
RP-3088 — Schedule superseded · shown as: "The register changed after this schedule was computed. Recompute the schedule before exporting or pushing it." Every schedule is pinned to the register version it was built from.
RP-3091 — Adjustment parameters missing · shown as: "Enter the adjustment period in years and the initial recovery percentage for every asset before computing. VAT IR Art. 52(2) sets the period…" Art. 52(2) sets the period — six years for movable assets, ten for immovable, or your shorter useful life — and RiyalPlus doesn't hold your useful lives, so you enter it for each asset. The initial recovery percentage is the deduction you took on acquisition.
RP-3092 — Capital asset not found · shown as: "This asset is not in the register's current version." Open the register's Assets step and check the asset reference.
RP-3093 — Year already finalised · shown as: "This year's adjustment was finalised. Re-open it before changing the taxable-use percentages." Finalising freezes the year so the exported schedule stays reproducible.
RP-3094 — Year outside the adjustment period · shown as: "This year falls outside the asset's adjustment period as you entered it." Check the acquisition date and the adjustment period on the asset row.
RP-3096 — Provisions register not found · shown as: "This provisions register does not exist or belongs to another account." Return to the provisions landing page and open the register from its list.
RP-3097 — Expected-credit-loss rates must be supplied · shown as: "Enter a loss rate for every aging bucket. RiyalPlus never suggests a rate: the provision matrix restates your…" The simplified provision-matrix approach has no regulatory validation target in our corpus, so the rates are yours to own.
RP-3098 — Lease inputs invalid · shown as: "Each lease needs a positive term, a non-negative discount rate and at least one payment." Fix the listed lease rows and recalculate.
RP-3099 — Push refused · shown as: "The calculation is not current (not calculated, superseded by a newer register version, or the zakat treatment…" An expected-credit-loss provision is never added to the zakat base; a non-current settled-debt provision is a liability; a legal-claims or zakat provision is equity.
RP-3100 — End-of-service table not in force for this period · shown as: "The Labour Law table held by RiyalPlus is not in force for this valuation date. The provision cannot be comput…" The table is versioned with an effective floor; a named reviewer updates it when the instrument moves.
RP-3117 — Beneficiary not found · shown as: "This beneficiary does not exist in your withholding-tax roster." Open the WHT beneficiaries page and add the beneficiary first.
RP-3118 — Screening answers incomplete · shown as: "Answer every required question in the screening (presence in the Kingdom, fixed place, dependent agent, docume…" The domestic permanent-establishment tests need every fact; the tool never assumes an answer.
RP-3119 — Screening not found · shown as: "This screening does not exist or belongs to another account." Open the beneficiary's screening history.
RP-3120 — Presence days invalid · shown as: "Days physically present in the Kingdom must be a whole number between 0 and 366 for the period." Count days of physical presence, not days engaged on the project from abroad.
RP-3060 — Filing entity not resolvable · shown as: "This run cannot resolve which filing entity the Zakat & tax case belongs to. Link the case to a company profil…" The cross-return check joins the Zakat & tax case to the VAT and TP records through the company profile; a case that was never linked to a profile has no join key. Open the case's Setup step, link the profile, then run the check again.
RP-3061 — Not enough sources to compare · shown as: "Fewer than two returns exist for this entity and fiscal year, so there is nothing to reconcile yet. File or co…" The check compares figures across products; with one source there is no second figure to compare against. Complete another product for the same entity and year and run again.
RP-3062 — Consistency run not found · shown as: "This consistency run does not exist or belongs to another account." Return to the Tools hub and open the run from its list.
RP-3063 — Tolerance out of range · shown as: "The tolerance must be between 0 and 25 percent and the absolute tolerance between 0 and 10,000,000 SAR." Tolerances are a RiyalPlus product setting, not a ZATCA de-minimis; enter values inside the allowed range.
RP-3075 — Scenario name already used · shown as: "A saved what-if scenario with this name already exists on this case. Choose another name." Scenario names are unique per case so comparisons stay unambiguous.
RP-3076 — Scenario baseline superseded · shown as: "The case was recomputed after this scenario was saved, so its figures no longer compare to the current result.…" A saved scenario is pinned to the compute run it was built on; 'Rerun' rebuilds it against the current run.
RP-3077 — Too many scenarios in one comparison · shown as: "A comparison holds at most four scenarios beside the baseline. Deselect some and try again." The comparison PDF is laid out for up to four scenarios; pick the ones that matter.
RP-3078 — Explanation letter not available on a trial case · shown as: "The explanation letter is produced for real cases only. Upload a trial balance to start a real case." Trial cases render watermarked previews of the declaration; the client letter has no preview form.
RP-3103 — Deferred tax not applicable · shown as: "This entity is Zakat-only, so it has no income-tax leg and no deferred tax." Deferred tax exists only where income tax applies (tax-only or mixed entities).
RP-3104 — Deferred tax needs a current compute · shown as: "There is no computed result for this case, or the result was superseded after the register was built. Compute…" The register reads the applied tax rate and the temporary differences from the case's computed result.
RP-3105 — Loss carry-forward blocked: accounts not confirmed CPA-audited · shown as: "Losses may be carried forward only when they are determined by statutory accounts audited by a CPA licensed in…" This is a statutory condition, not a warning: the tool will not recognise a deferred tax asset on losses until the audit is confirmed.
RP-3106 — Loss carry-forward disallowed after ownership change · shown as: "An ownership change of 50 percent or more disallows carrying losses forward for the non-Saudi share unless the…" The gate is scoped to the non-Saudi share; the carve-out is the preparer's assertion and is recorded with the register.
RP-3107 — Deferred tax items invalid · shown as: "One or more register items are invalid (missing amounts, unknown type, or a negative base). Fix the highlighte…" Each item needs a type, a book base and a tax base in SAR.
RP-3108 — Account codes missing · shown as: "Enter an account code for every journal line that will be generated (expense and provision accounts)." The journal file is only useful with your own chart-of-accounts codes; the tool never invents them.
RP-3109 — Journal needs a current compute · shown as: "There is no computed result for this case, or it was superseded after the journal was generated. Compute the c…" Journal lines are pinned to the compute run they came from so a downloaded file never silently diverges from the filed numbers.
RP-4006 — Explanation letter could not be generated · shown as: "The explanation letter could not be generated. Try again; if it persists, contact support with the case refere…" A rendering failure on our side; nothing about your case data is wrong.
RP-4007 — Journal file could not be generated · shown as: "The journal file could not be generated. Try again; if it persists, contact support with the case reference." A file-writing failure on our side; your journal lines are still saved.
RP-COMPUTE-OIL-BRACKETS-MISSING — Oil-sector rates pending · shown as: "Oil/hydrocarbon producer shareholders are present on this case…" The special tax-rate brackets for oil-sector cases aren't yet available, so this case can't be computed. Contact support if this applies to you.
RP-COMPUTE-OLD-ZIR-UNSUPPORTED — Old Zakat regulation · shown as: "Fiscal years governed by the pre-2024 zakat rules (years beginning before 1 Jan 2024) can't be filed through RiyalPlus — file them manually. One route into the supported 1445H rules may still exist: if ZATCA has notified you that an audit of those years has commenced, you may — within 60 days of that notification — irrevocably elect to apply the 1445H Regulations to them. Consult your advisor before electing." Only filings from the 2024 fiscal year onward are supported.
RP-COMPUTE-GAS-UNSUPPORTED — Gas-sector rates unsupported · shown as: "This entity is declared as engaged in natural-gas investment…" Article 7(b) natural-gas taxation (its own base rules and loss ring-fence) isn't yet implemented, so this case can't be computed. File this return manually until gas support ships.
RP-COMPUTE-FINANCING-PAYER — Financing-activities payer unsupported · shown as: "This company is a financing-activities payer — a bank, a finance or refinancing company licensed by the Saudi Central Bank, or a financing fund licensed by the Capital Market Authority. Its Zakat is worked out under Articles 66 to 72 of the Zakat Regulations from its audited year-end figures, not by the method this return uses, and RiyalPlus does not file this return for it. If the company is not one of these, answer No to that question." Banks, finance/refinancing companies and CMA financing funds compute Zakat under a different regulatory method (MR 1007 Arts. 66-72) that this return does not implement — file manually. If the company isn't one of these, answer No to the financing-licence question on Setup.
RP-COMPANY-NO-PRIOR-CASE — Nothing to copy · shown as: "No prior case with shareholders found for this company…" There's no earlier case to copy shareholders from. Enter them manually for this case.
Withholding Tax (WHT)
RP-3024 — Return filed and locked · shown as: "This WHT return has been filed and is locked — open the correct month or contact support." A filed month is immutable. Record the change in the correct open month.
RP-3025 — Action not allowed in this state · shown as: "This WHT return's state does not allow that action — review the register and recompute first." For example, marking a month nil while payments exist. Review the payment register and recompute.
RP-3026 — WHT compute failed · shown as: "The WHT return could not be computed — please try again." A temporary problem. Try again; contact support if it persists.
RP-3027 — Payment date outside the month · shown as: "The payment date is outside this return's month — correct the date or add it to the matching month."
RP-3033 — Beneficiary can't be deleted · shown as: "This beneficiary has payments recorded against it and can't be deleted — archive it instead."
RP-3034 — WHT case archived · shown as: "This WHT case is archived — unarchive it to keep filing for this year."
RP-3035 — AEP not active · shown as: "Automatic extraction isn't active on this WHT case — activate AEP to upload payment documents." AEP is an optional one-time upgrade; activate it, or enter payments manually.
Transfer Pricing (TP)
RP-3040 — TP case archived · shown as: "This TP case is archived — unarchive it to continue working on this disclosure."
VAT
RP-3041 — VAT case archived · shown as: "This VAT case is archived — unarchive it to continue working on its periods."
RP-3042 — Period filed and immutable · shown as: "This VAT period is filed and immutable. To fix an error, use the corrections field of the next period (small differences) or a corrective return (larger ones)."
RETT
RP-3043 — Transaction filed and immutable · shown as: "This RETT transaction is filed and immutable. Corrections or cancellations go through a linked refund/correction request." Mirrors ZATCA's own correction process.
RP-3044 — Usufruct needs an asserted rate · shown as: "The usufruct (>50 years) path needs a user-asserted present-value discount rate with its basis (accredited valuer, or a ZATCA ruling under IR Art. 12). The regulation specifies no rate — RiyalPlus will never guess one." Enter the discount rate and its basis to proceed.
Bookkeeping (Invoice Reader)
RP-3048 — Action not allowed for this batch's state · shown as: "This bookkeeping batch is not in a state that allows this action." Drafts can be edited and processed; processed batches can be downloaded or archived.
RP-3049 — Batch is empty · shown as: "This batch has no invoices yet." Upload at least one invoice (PDF or photo) before processing.
Qawaem deposit
RP-3045 — XBRL not yet available · shown as: "The tagged XBRL instance cannot be generated yet: the Qawaem taxonomy templates are not loaded (UN-QAW-XBRL). The validated statements and the filing pack are available; deposit manually on the Qawaem portal." Direct XBRL export is coming soon; the validated pack covers the manual deposit meanwhile.
RP-3046 — Generate statements first · shown as: "The Qawaem deposit needs generated financial statements. Run the FSG step on this case first (compute, then generate the statements)."
Support assistant and tickets
RP-3014 — Assistant unavailable · shown as: "The support assistant is temporarily unavailable. Please try again shortly." Try again shortly, or email support@riyalplus.ai.
RP-3015 — Ticket not found · shown as: "Support ticket not found." Check the link or open the Support page to find your conversations.
RP-3016 — Conversation expired · shown as: "This conversation has expired. Please start a new one." Start a new conversation from the Support page; your history stays listed.
RP-3017 — No access to this ticket · shown as: "You don't have access to this support conversation or ticket." Sign in with the account that created it.
RP-3171 — Request closed · shown as: "This support request is closed and takes no more replies. Open a new request from it and we will link the two." The request was resolved or closed, so it takes no more replies. Open the request on the Support page and choose Open a linked request; the new request is linked to the closed one.
Tools
RP-3054 — That register name is taken · shown as: "A register with this name already exists for this entity. Choose a different name, or open the existing register and add a new version." Registers are named per entity and per tool. Either pick another name, or open the register you already have and add a new version to it — corrections are always a new version, never an edit to an old one.
RP-3056 — Some rows didn't pass validation · shown as: "Some rows in this register did not pass validation and nothing was saved. Correct the flagged rows — or the column mapping — and submit the file again." Nothing was saved, so nothing is half-imported. The message lists the first few problems. The usual cause is a column mapped to the wrong field, or a value the column can't hold (text where an amount is expected, a date in an unexpected format). Fix the file or the mapping and upload again.
RP-3057 — That record no longer exists · shown as: "This tool record no longer exists. It may have been deleted, or the link is out of date — reopen the tool from its list." The saved item (a report, a scenario, a deadline) has been removed, or you followed an old link or bookmark. Open the tool from its own list to see what's there now.
RP-3058 — That tool can't fill this line · shown as: "This tool cannot set that declaration input. Each tool may only push the lines it computes — push the value from the tool that owns it." Every tool may only write the declaration lines it actually calculates, so nothing can quietly overwrite a figure that came from somewhere else. Push the value from the tool that produces it. If you believe the right tool refused, contact support.
RP-3059 — The filing is locked · shown as: "This value cannot be pushed into the filing right now — the case is filed, or its Mapping/Compute step is approved and locked. Unlock the step (the downstream steps are reset) and push again." A locked step is protecting a figure you already approved. Open the case, unlock the Mapping or Compute step (confirming the unlock resets the steps after it), then push the value and re-run compute. A case that has been filed must be un-filed first.
Exporting your documents
RP-4005 — Statements do not balance · shown as: "The financial statements do not balance — total assets do not equal liabilities plus equity." Check the trial balance and the account mappings, then re-compute before exporting. The message includes how far out the balance is.
RP-4004 — No result to export · shown as: "No computed result found. Run computation first."
RP-3135 — Evidence pack needs a filed case · shown as: "The evidence pack needs a filed case. File this declaration first, then create the pack." The audit evidence pack shows where the numbers in a FILED return came from, so it only builds once the case has actually been filed (Export step → "Confirm review"). File the declaration, then create the pack.
RP-3136 — Evidence pack could not be generated · shown as: "The evidence pack could not be generated. Try again; if it persists, contact support with the case reference." Try again; if it persists, contact support with the case reference.
Verifying documents (Verify+)
RP-5001 — Document read failed · shown as: "Document extraction failed — please try again."
Signing in and access
RP-6003 — Admin access denied · shown as: "Admin access denied." Your role doesn't have admin access for this action. Ask your account's Admin.
RP-6004 — AI-processing consent required · shown as: "Please review and accept the AI-processing notice before using this feature." Features that read your documents with AI — trial-balance upload, account mapping, contract extraction, the Invoice Reader, Verify+, WHT payment-document extraction and TP classification — need your account to have accepted the AI-processing notice first. The notice appears in place of the action itself: read it, tick the box, press Accept, then retry. One acceptance covers the whole account, including team members, and is asked again only if the notice's wording changes. If you decline, those features stay unavailable; where a manual alternative exists (entering a company profile by hand instead of extracting the contract) it remains open. Everything deterministic — VAT, RETT, UBO, Excise, Qawaem, and computing a declaration — works without it.
Files and uploads
RP-7002 — Download failed · shown as: "File download failed — please try again."
The warnings panel
RP-7011 — Action not available · shown as: "Invalid action on warning…" Pick one of the offered actions.
RP-7012 — Override reason not allowed · shown as: "Override reason not allowed…" Choose a reason from the list.
RP-7013 — Warning not found · shown as: "Warning not found for this case." The warning may have cleared on recompute. Refresh the page.
System errors
These point to something on our side. Your data is safe; our team is alerted automatically.
RP-3003 — Computation engine error · shown as: "Computation engine error." A system issue on our side. Contact support.
RP-9001 — Database connection error · shown as: "Database connection error." Wait a few minutes and try again; contact support if it continues.
RP-9002 — AI service configuration error · shown as: "AI service configuration error." A configuration issue on our side. Contact support.
RP-9999 — Unexpected error (with reference) · shown as: "An unexpected error occurred. Reference: {trace_id}. Please contact support if this persists." Note the reference code and include it when you contact support — it lets the team locate the exact event.
Registry-synchronised error entries
The following live registry codes are kept here with the same filer-facing sentence as the service catalogue.
RP-1041 — Deterministic recipe extraction failed — falling back to AI extraction. · shown as: "Deterministic recipe extraction failed — falling back to AI extraction."
RP-1043 — Single-call extraction failed. The system will attempt a fallback extraction method. · shown as: "Single-call extraction failed. The system will attempt a fallback extraction method."
RP-1046 — The Okaz trial-balance bridge is not configured in this environment. Use the standard file upload instead. · shown as: "The Okaz trial-balance bridge is not configured in this environment. Use the standard file upload instead."
RP-1047 — Could not fetch the trial balance from Okaz. Please retry, or use the standard file upload. · shown as: "Could not fetch the trial balance from Okaz. Please retry, or use the standard file upload."
RP-1048 — The trial balance received from Okaz failed an integrity check and was rejected. Please retry — if this persists, contact support. · shown as: "The trial balance received from Okaz failed an integrity check and was rejected. Please retry — if this persists, contact support."
RP-1049 — Okaz refused to export the trial balance because the underlying books do not balance. Fix the imbalance in Okaz, then retry. · shown as: "Okaz refused to export the trial balance because the underlying books do not balance. Fix the imbalance in Okaz, then retry."
RP-1050 — The commercial registration number on this case does not match the one on the selected Okaz entity. Confirm you selected the correct entity. · shown as: "The commercial registration number on this case does not match the one on the selected Okaz entity. Confirm you selected the correct entity."
RP-1051 — The commercial registration number must be exactly 10 digits. Check for extra characters or spaces and try again. · shown as: "The commercial registration number must be exactly 10 digits. Check for extra characters or spaces and try again."
RP-2012 — Subscription charge could not be completed by the payment processor. · shown as: "Subscription charge could not be completed by the payment processor."
RP-2013 — Subscription renewal payment failed. Please update payment details and retry. · shown as: "Subscription renewal payment failed. Please update payment details and retry."
RP-2016 — Company capital is required to set pricing before creating a case. · shown as: "Company capital is required to set pricing before creating a case."
RP-2017 — Subscription action rejected: no eligible subscription found for this operation. · shown as: "Subscription action rejected: no eligible subscription found for this operation."
RP-2018 — This feature requires an active subscription. Please renew or subscribe to continue. · shown as: "This feature requires an active subscription. Please renew or subscribe to continue."
RP-2021 — Enterprise-band companies require a custom quote. Please contact sales. · shown as: "Enterprise-band companies require a custom quote. Please contact sales."
RP-2022 — Trial cases are limited to 200 accounts. Create a paid case to process a larger trial balance. · shown as: "Trial cases are limited to 200 accounts. Create a paid case to process a larger trial balance."
RP-2023 — Trial cases are locked after computation and cannot be unlocked. · shown as: "Trial cases are locked after computation and cannot be unlocked."
RP-2025 — Hash chain integrity check failed. Contact administrator. · shown as: "Hash chain integrity check failed. Contact administrator."
RP-2027 — This invitation has expired. Please request a new invitation from your firm admin. · shown as: "This invitation has expired. Please request a new invitation from your firm admin."
RP-2028 — This invitation has already been used. Please request a new invitation from your firm admin. · shown as: "This invitation has already been used. Please request a new invitation from your firm admin."
RP-3018 — Support email delivery failed. The ticket was created; our team will follow up. · shown as: "Support email delivery failed. The ticket was created; our team will follow up."
RP-3101 — This calculation can only be pushed into a Zakat & tax case of the same filing entity as its register. · shown as: "This calculation can only be pushed into a Zakat & tax case of the same filing entity as its register."
RP-3121 — This case was computed by a newer version of the calculation engine than the one running now. Recompute and what-if are unavailable until that version is restored; the existing result is unaffected. · shown as: "This case was computed by a newer version of the calculation engine than the one running now. Recompute and what-if are unavailable until that version is restored; the existing result is unaffected."
RP-3122 — Enter a 10-digit commercial registration number. · shown as: "Enter a 10-digit commercial registration number."
RP-3123 — The commercial-registry lookup did not return a usable record for this number. · shown as: "The commercial-registry lookup did not return a usable record for this number."
RP-3124 — The commercial-registry lookup service did not answer. The other rows on this check are unaffected. · shown as: "The commercial-registry lookup service did not answer. The other rows on this check are unaffected."
RP-3125 — This check's stored record is incomplete and cannot be exported. Run the check again. · shown as: "This check's stored record is incomplete and cannot be exported. Run the check again."
RP-3127 — Mapping cannot open: this trial balance's imbalance has not been acknowledged yet. Acknowledge the shortfall on the Upload step to continue. · shown as: "Mapping cannot open: this trial balance's imbalance has not been acknowledged yet. Acknowledge the shortfall on the Upload step to continue."
RP-3130 — Your filing period is incomplete. Add the missing start or end date before continuing. · shown as: "Your filing period is incomplete. Add the missing start or end date before continuing."
RP-3137 — That date looks Hijri, not Gregorian. Type a Gregorian date — this estimate never converts one silently. · shown as: "That date looks Hijri, not Gregorian. Type a Gregorian date — this estimate never converts one silently."
RP-3138 — That date is not a valid Gregorian date. Type it as YYYY-MM-DD. · shown as: "That date is not a valid Gregorian date. Type it as YYYY-MM-DD."
RP-3139 — RiyalPlus does not estimate a fine for that obligation yet. Pick one of income tax, zakat, withholding tax, or the financial-statement deposit. · shown as: "RiyalPlus does not estimate a fine for that obligation yet. Pick one of income tax, zakat, withholding tax, or the financial-statement deposit."
RP-3140 — No entity was found for this calendar. Pick an entity from the list, or add one first. · shown as: "No entity was found for this calendar. Pick an entity from the list, or add one first."
RP-3141 — This entity's fiscal year is recorded as Hijri. A lunar year end cannot be projected as a fixed Gregorian date, so this calendar is refused rather than showing a date that could be wrong. · shown as: "This entity's fiscal year is recorded as Hijri. A lunar year end cannot be projected as a fixed Gregorian date, so this calendar is refused rather than showing a date that could be wrong."
RP-3142 — One or more dates on this calendar rolled using a holiday-table entry that is not yet confirmed, or a year the table does not cover. The date shown is never later than what an unrolled date would give. · shown as: "One or more dates on this calendar rolled using a holiday-table entry that is not yet confirmed, or a year the table does not cover. The date shown is never later than what an unrolled date would give."
RP-3143 — This calendar's export could not be generated from the data sent. Reload the calendar and try the export again. · shown as: "This calendar's export could not be generated from the data sent. Reload the calendar and try the export again."
RP-3144 — This entity's fiscal-year calendar field carries a calendar we do not recognise — neither the confirmed Gregorian marker nor a recognised Hijri one. Correct the entity's financial_year_calendar field before this calendar can be built. · shown as: "This entity's fiscal-year calendar field carries a calendar we do not recognise — neither the confirmed Gregorian marker nor a recognised Hijri one. Correct the entity's financial_year_calendar field before this calendar can be built." The value the field actually holds travels as its own field on the response, shown on screen next to this message — it names a typo or an unrelated word, never "Hijri" (that is RP-3141's own case).
RP-3145 — That date looks Hijri, not Gregorian. Type a Gregorian date — this figure never converts one silently. · shown as: "That date looks Hijri, not Gregorian. Type a Gregorian date — this figure never converts one silently."
RP-3146 — That date is not a valid Gregorian date. Type it as YYYY-MM-DD. · shown as: "That date is not a valid Gregorian date. Type it as YYYY-MM-DD."
RP-3147 — The filing period given falls outside the window RiyalPlus has verified for MR 1007's fund articles. No figure is produced for it — confirm which rules apply to this period before relying on any number for it. · shown as: "The filing period given falls outside the window RiyalPlus has verified for MR 1007's fund articles. No figure is produced for it — confirm which rules apply to this period before relying on any number for it."
RP-3148 — RiyalPlus has verified CRS reporting years 2017 through 2025 only. Pick a reporting year in that range. · shown as: "RiyalPlus has verified CRS reporting years 2017 through 2025 only. Pick a reporting year in that range."
RP-3149 — The CRS pack could not be produced after the charge was taken. The points have been returned to your balance — try downloading again. · shown as: "The CRS pack could not be produced after the charge was taken. The points have been returned to your balance — try downloading again."
RP-3150 — The CRS pack is available only when the institution has confirmed it is a Reporting Financial Institution for this year. Answer 'yes' to the first question before downloading. · shown as: "The CRS pack is available only when the institution has confirmed it is a Reporting Financial Institution for this year. Answer 'yes' to the first question before downloading."
RP-3157 — Institution not found. · shown as: "Institution not found."
RP-3158 — Shared costs exist and the figures the fraction needs are missing. Add the named figures to your workbook and try again. · shown as: "Shared costs exist and the figures the fraction needs are missing. Add the named figures to your workbook and try again."
RP-3159 — This year's taxed and exempt supplies both total zero, so the fraction is 0 divided by 0. No figure is produced for it — this is a ruling not yet given, not a data gap you can fix by re-uploading. · shown as: "This year's taxed and exempt supplies both total zero, so the fraction is 0 divided by 0. No figure is produced for it — this is a ruling not yet given, not a data gap you can fix by re-uploading."
RP-3161 — This case's Zakat regime cannot be confirmed against its computed result · shown as: "This case's Zakat regime cannot be confirmed against its computed result. Recompute the case, then attach the deferred-tax register again."
RP-3162 — The financing-activities attribution base could not be computed from the figures given · shown as: "The financing-activities attribution base could not be computed from the figures given. See the detail below for the figure that is missing or impossible; correct it and resubmit."
RP-3163 — The sheets of this workbook do not fit together · shown as: "The sheets of this workbook do not fit together: a row names a company the workbook does not know, a company or a person appears twice or in two roles, or a company's holdings add up to more than 100%. The cells are listed below; correct them and upload again."
RP-3164 — A figure in this schedule is blank or cannot be right · shown as: "A figure in this schedule is blank or cannot be right. The box named in the error says which. Zero is an answer; a blank is not."
RP-3165 — No company was found for this schedule · shown as: "No company was found for this schedule. Pick one from the list, or add it first."
RP-3166 — This Zakat year began before 1 January 2024 · shown as: "This Zakat year began before 1 January 2024. The older rules governed it, and this schedule does not work them out."
RP-3167 — We cannot work this out (a licence held for part of the year) · shown as: "We cannot work this out. The Regulations define an insurance payer by its licence during the Zakat year, and do not say how a licence held for part of the year is treated."
RP-3168 — We cannot work out this line (the next Zakat year is not 365 days long) · shown as: "We cannot work out this line. The Regulations count 'non-current' in 365 days (Article 19) but bring these reserves back in 'the following year' (Article 81(4)). When the following year is not 365 days long the two differ, and how they combine has not been ruled on."
RP-3169 — The pack could not be produced · shown as: "The pack could not be produced. Nothing was lost — try again."
RP-3170 — An answer in this schedule is blank or is not one of the accepted words · shown as: "An answer in this schedule is blank or is not one of the accepted words. The question named in the error says which, and lists the words."
RP-3172 — This VAT return period contains 1 July 2020 · shown as: "This return period contains 1 July 2020, when the standard VAT rate rose from 5% to 15%. The transitional rule for supplies spanning that change is not held in our reference library, so we do not compute this period. Split it at 30 June 2020 and compute each part." The standard rate was 5% up to 30 June 2020 and 15% from 1 July 2020. A period that spans the change is not computed, because the transitional rule for such supplies is not in the reference library. Compute the part up to 30 June 2020 and the part from 1 July 2020 separately.
RP-3151 — The row count or the total you typed does not match what the file holds. Check the file's own total and try the import again. · shown as: "The row count or the total you typed does not match what the file holds. Check the file's own total and try the import again."
RP-3152 — This month already holds an import. Remove it first (Remove this import) before importing another register. · shown as: "This month already holds an import. Remove it first (Remove this import) before importing another register."
RP-3154 — That day does not exist in that month. Check the month you picked and try again. · shown as: "That day does not exist in that month. Check the month you picked and try again."
RP-3155 — RiyalPlus converts dates between 1343 AH and 1500 AH (1924-2077 CE) only. Check the year and the calendar you picked — we never switch it for you. · shown as: "RiyalPlus converts dates between 1343 AH and 1500 AH (1924-2077 CE) only. Check the year and the calendar you picked — we never switch it for you."
RP-3156 — That calendar or rule is not one this tool recognises. Reload the page and try again. · shown as: "That calendar or rule is not one this tool recognises. Reload the page and try again."
RP-4290 — API key rate limit exceeded (per-minute) — please retry after 60 seconds. · shown as: "API key rate limit exceeded (per-minute) — please retry after 60 seconds."
RP-4291 — API key daily rate limit exceeded — please retry tomorrow. · shown as: "API key daily rate limit exceeded — please retry tomorrow."
RP-6005 — This credential is read-only and limited to the observer routes. · shown as: "This credential is read-only and limited to the observer routes."
RP-6006 — This action's grant is invalid, expired or already used. Do it from the step itself. · shown as: "This action's grant is invalid, expired or already used. Do it from the step itself."
RP-7003 — Your saved account mappings could not be loaded. This is usually a storage issue, not lost data — re-run mapping to regenerate them. · shown as: "Your saved account mappings could not be loaded. This is usually a storage issue, not lost data — re-run mapping to regenerate them."
RP-8001 — Beta case limit reached. Contact support for additional quota. · shown as: "Beta case limit reached. Contact support for additional quota."
Registry-synchronised warning entries
These live warning notices use the same customer-facing sentence as the warning catalogue.
W-ADJ-APPLICABILITY-GAP — Adjustment declared applicable without ECI basis · shown as: "Adjustment declared applicable without ECI basis"
W-ADJ-APPLICABILITY-MISSING-ECI — Adjustment applicability pre-check skipped — no contract on file · shown as: "Adjustment applicability pre-check skipped — no contract on file"
W-BS-IMBAL-CLOSING — Balance sheet does not balance · shown as: "Balance sheet does not balance"
W-BS-IMBAL-OPENING — Opening balance sheet does not balance · shown as: "Opening balance sheet does not balance"
W-CERT-RP-MISMATCH — Trial balance contradicts related-party certification answer · shown as: "Trial balance contradicts related-party certification answer"
W-CF-OPENING-MISSING — Cashflow rendered without opening balance sheet · shown as: "Cashflow rendered without opening balance sheet"
W-COMPLIANCE-CPA-CERT-TAX — CPA certification of the tax declaration · shown as: "CPA certification of the tax declaration"
W-COMPLIANCE-CPA-CERT-ZAKAT — CPA certification of audited financial statements · shown as: "CPA certification of audited financial statements"
W-COMPUTE-ADJ-LINEAGE — Fixed-asset opening balance missing for zakat base · shown as: "Fixed-asset opening balance missing for zakat base"
W-COMPUTE-COGS-NEGATIVE — Cost of goods sold is negative · shown as: "Cost of goods sold is negative"
W-COMPUTE-DIVERGENT-AOA-CAPITAL-VS-PROFIT — Divergent AoA: capital share differs from profit share · shown as: "Divergent AoA: capital share differs from profit share"
W-COMPUTE-EQUITY-DERIVED-FROM-BS — Equity derived from the mapped balance sheet for the Article 28 ceiling · shown as: "Equity derived from the mapped balance sheet for the Article 28 ceiling"
W-COMPUTE-FINANCING-GENERAL-BASE-DISAPPLIED — The general base and its Art. 27 minimum do not apply to a financing-activities payer · shown as: "The general base and its Art. 27 minimum do not apply to a financing-activities payer"
W-COMPUTE-FINANCING-INPUTS-MISSING — SAMA-licensed flag set with no financing attribution-base inputs · shown as: "SAMA-licensed flag set with no financing attribution-base inputs"
W-COMPUTE-MAP-COVERAGE — Account has balance but no approved mapping · shown as: "Account has balance but no approved mapping"
W-COMPUTE-MID-YEAR-DIVERGENT-AOA-PROFIT-PCT-NOT-PRORATED — Divergent AoA: profit-share basis not day-weighted (UN-014b) · shown as: "Divergent AoA: profit-share basis not day-weighted (UN-014b)"
W-COMPUTE-NET-LOSS — Period resulted in a net loss · shown as: "Period resulted in a net loss"
W-COMPUTE-NI-DOUBLE-COUNT — Net-income mapping would double-count · shown as: "Net-income mapping would double-count"
W-COMPUTE-OPENING-RE-MISSING — Opening retained earnings could not be determined · shown as: "Opening retained earnings could not be determined"
W-COMPUTE-PARENT-SKIP — Parent account skipped in totals · shown as: "Parent account skipped in totals"
W-COMPUTE-REGULATORY-INPUT-MISSING-EQUITY — End-of-year equity wasn't provided — the Article 28 ceiling was skipped · shown as: "End-of-year equity wasn't provided — the Article 28 ceiling was skipped"
W-COMPUTE-RESULT-SCHEMA-MISMATCH — Compute result does not match formal schema · shown as: "Compute result does not match formal schema"
W-COMPUTE-SAMA-GP-MISSING-LOSS-YEAR — No net profit and no gross profit supplied — Art. 71(2)'s band could not be applied · shown as: "No net profit and no gross profit supplied — Art. 71(2)'s band could not be applied"
W-COMPUTE-TAX-LOSS-CLAMP — Loss-carryforward deduction clamped to 25% · shown as: "Loss-carryforward deduction clamped to 25%"
W-COMPUTE-TB-MAPPING-DRIFT — Approved mappings reference accounts missing from the current trial balance · shown as: "Approved mappings reference accounts missing from the current trial balance"
W-COMPUTE-UNPARSED — Unparsed calculator notice · shown as: "Unparsed calculator notice"
W-COMPUTE-ZAKAT-NEGATIVE — Zakat base is negative · shown as: "Zakat base is negative"
W-COMPUTE-ZAKAT-OPENING-MISSING — Opening balances not available for zakat base · shown as: "Opening balances not available for zakat base"
W-COMPUTE-ZAKAT-OPENING-OK — Opening balances available for zakat base · shown as: "Opening balances available for zakat base"
W-COMPUTE-ZAKAT-RATE-FALLBACK — Zakat rate fell back to flat 2.5% · shown as: "Zakat rate fell back to flat 2.5%"
W-CTRL-ACC-THRESHOLD — Accountant threshold · shown as: "Accountant threshold"
W-CTRL-ADJ-LINEAGE — Adjustment lineage · shown as: "Adjustment lineage"
W-CTRL-BS-EQ-CLOSE — Closing balance-sheet equation · shown as: "Closing balance-sheet equation"
W-CTRL-BS-EQ-OPEN — Opening balance-sheet equation · shown as: "Opening balance-sheet equation"
W-CTRL-COGS-FORMULA — COGS formula · shown as: "COGS formula"
W-CTRL-COMPLETENESS — Return completeness · shown as: "Return completeness"
W-CTRL-DUE-120D — 120-day filing deadline · shown as: "120-day filing deadline"
W-CTRL-FREEZE — Submission freeze gate · shown as: "Submission freeze gate"
W-CTRL-MAP-COVERAGE — Mapping coverage · shown as: "Mapping coverage"
W-CTRL-NETPROFIT-TIEOUT — Net-profit tie-out · shown as: "Net-profit tie-out"
W-CTRL-NO-DOUBLE-COUNT — No double-counting · shown as: "No double-counting"
W-CTRL-QA-CBCR — CbCR question · shown as: "CbCR question"
W-CTRL-QA-RP — Related-party question · shown as: "Related-party question"
W-CTRL-RECEIPTS — Receipt attachments · shown as: "Receipt attachments"
W-CTRL-TAX-BASE-FORMULA — Tax base formula · shown as: "Tax base formula"
W-CTRL-TB-BALANCE — Trial balance · shown as: "Trial balance"
W-CTRL-TP-AGGREGATE-THRESHOLD — Related-party aggregate transaction threshold · shown as: "Related-party aggregate transaction threshold"
W-CTRL-TP-ALL-CLASSIFIED — All related parties classified · shown as: "All related parties classified"
W-CTRL-TP-ARM-LENGTH — Arm's-length test · shown as: "Arm's-length test"
W-CTRL-TP-CPA-CERT — TP CPA certification · shown as: "TP CPA certification"
W-CTRL-TP-DISCLOSURE-REQ — TP disclosure requirement · shown as: "TP disclosure requirement"
W-CTRL-VERIFY-VARIANCE — Verification variance · shown as: "Verification variance"
W-CTRL-ZAKAT-BASE-FORMULA — Zakat base formula · shown as: "Zakat base formula"
W-CTRL-ZBL-OPENING-DATA — Zakat opening-balance data · shown as: "Zakat opening-balance data"
W-ECI-ACTIVITY-TB-MISMATCH — Trial balance does not match the contract's business archetype · shown as: "Trial balance does not match the contract's business archetype"
W-ECI-AUDIT-REQUIRED — Legal form requires an audit; accountant attestation is missing · shown as: "Legal form requires an audit; accountant attestation is missing"
W-ECI-CAPITAL-TIMING-MISMATCH — Capital-payment timing does not match the contract schedule · shown as: "Capital-payment timing does not match the contract schedule"
W-ECI-MISSING — No contract is linked to this case · shown as: "No contract is linked to this case"
W-ECI-OWNERSHIP-MISMATCH — Ownership percentages diverge from contract · shown as: "Ownership percentages diverge from contract"
W-ECI-PROFIT-SPLIT-DEFAULTED — Profit split defaulted to capital; contract states a different split · shown as: "Profit split defaulted to capital; contract states a different split"
W-ECI-RELATED-PARTY-UNDECLARED — Contract names related parties; certification declares none · shown as: "Contract names related parties; certification declares none"
W-ECI-SUBFIELDS-MISSING — Contract ECI metadata incomplete — re-upload to enable validators · shown as: "Contract ECI metadata incomplete — re-upload to enable validators"
W-INGEST-ALL-ZERO-ROW — Accounts with all-zero balances · shown as: "Accounts with all-zero balances"
W-INGEST-DUPLICATE-CODE — Duplicate account codes or missing required fields · shown as: "Duplicate account codes or missing required fields"
W-INGEST-GRAND-TOTAL-FAIL — Printed grand total does not match the leaf sum · shown as: "Printed grand total does not match the leaf sum"
W-INGEST-PARENT-SUBTOTAL-FAIL — Parent subtotal does not match its children · shown as: "Parent subtotal does not match its children"
W-INGEST-PER-ACCOUNT-ARITHMETIC-FAIL — Per-account opening + movement ≠ closing · shown as: "Per-account opening + movement ≠ closing"
W-INGEST-TB-CLOSURE-FAIL — TB closure shortfall · shown as: "TB closure shortfall"
W-INGEST-VALIDATION-WEAK — Validation could not exercise any accounting identity · shown as: "Validation could not exercise any accounting identity"
W-INV-AS-BOOKED-LOSS — As-booked loss likely caused by a missing closing-stock entry · shown as: "As-booked loss likely caused by a missing closing-stock entry"
W-INV-OPENING-TIEOUT — Opening stock does not tie to the prior filing's closing inventory · shown as: "Opening stock does not tie to the prior filing's closing inventory"
W-INV-STOCK-ROUTED — Stock automatically treated as closing inventory (missing closing entry) · shown as: "Stock automatically treated as closing inventory (missing closing entry)"
W-MAP-BS-STOCK-NO-CLOSING-LEG — BS stock account mapped but no closing-stock P&L line anywhere · shown as: "BS stock account mapped but no closing-stock P&L line anywhere"
W-MAP-CONCURRENT-EDIT — Concurrent mapping-review edits by multiple users · shown as: "Concurrent mapping-review edits by multiple users"
W-MAP-GROSS-MARGIN — Gross margin outside the expected range · shown as: "Gross margin outside the expected range"
W-MAP-INVENTORY-BS-ORPHAN — Closing inventory in COGS but no BS inventory account mapped · shown as: "Closing inventory in COGS but no BS inventory account mapped"
W-MAP-PL-BS-CROSSCHECK — Net profit disagrees between P&L and balance sheet · shown as: "Net profit disagrees between P&L and balance sheet"
W-MAP-PL-OPENING — P&L account has a non-zero opening balance · shown as: "P&L account has a non-zero opening balance"
W-MAP-SIBLING-CONSENSUS — Account classified differently from its siblings · shown as: "Account classified differently from its siblings"
W-MAP-SIGN-MISMATCH — Account sign conflicts with target line · shown as: "Account sign conflicts with target line"
W-MAP-SIGN-MISMATCH-CONTRA — Contra-account sign: normal pattern · shown as: "Contra-account sign: normal pattern"
W-MAP-STOCK-NATURE — Account balance contradicts its target line · shown as: "Account balance contradicts its target line"
W-MODE-MISMATCH-DETECTED — Filing mode disagrees with detected accounting history · shown as: "Filing mode disagrees with detected accounting history"
W-OWN-YE-SNAPSHOT — Ownership changed during the year — year-end composition applies · shown as: "Ownership changed during the year — year-end composition applies"
W-RATE-SHORT-PERIOD-UNIFORM — Short period — uniform day-count rate applied to the entire base · shown as: "Short period — uniform day-count rate applied to the entire base"
W-SEQ-OPENING-CLOSING-MISMATCH — Opening balance does not match prior-year closing for this line · shown as: "Opening balance does not match prior-year closing for this line"
W-SEQ-OPENING-LINE-MISSING — Prior-year line has closing balance with no source in successor · shown as: "Prior-year line has closing balance with no source in successor"
W-SEQ-PERIOD-GAP — Gap between prior filing period end and current filing period start · shown as: "Gap between prior filing period end and current filing period start"
W-SEQ-PERIOD-OVERLAP — Current filing period overlaps the prior filing period · shown as: "Current filing period overlaps the prior filing period"
W-SEQ-PRIOR-CASE-STALE — Prior filing is more than 18 months old · shown as: "Prior filing is more than 18 months old"
W-TB-BALANCE — Trial balance totals do not match · shown as: "Trial balance totals do not match"
W-ZAKAT-ADJ-PROVISIONS-SUPERSEDED — Provisions add-back not applied to the zakat leg (Art. 63(9), 1445H) · shown as: "Provisions add-back not applied to the zakat leg (Art. 63(9), 1445H)"
W-ZAKAT-ART29-CL-EXCESS — Current-liabilities excess over current assets added to the base (Art. 29(2)(b)) · shown as: "Current-liabilities excess over current assets added to the base (Art. 29(2)(b))"
W-ZAKAT-ART73-OFFPLAN-REVIEW — RE-projects deduction taken with Art. 73 conditions unverified — review · shown as: "RE-projects deduction taken with Art. 73 conditions unverified — review"
W-ZAKAT-SHORT-PERIOD-CESSATION-NOTE — Short period — cessation or merger treatments may apply (Arts. 15(4)/14) · shown as: "Short period — cessation or merger treatments may apply (Arts. 15(4)/14)"
Internal and retired codes (reference only)
These codes are not shown to users in normal use — they are retired or internal. Listed for reference.
- RP-1001 — Retired or internal registry code.
- RP-1004 — Retired or internal registry code.
- RP-1005 — Retired or internal registry code.
- RP-1007 — Retired or internal registry code.
- RP-1010 — Retired or internal registry code.
- RP-1026 — Retired or internal registry code.
- RP-2002 — Retired or internal registry code.
- RP-2003 — Retired or internal registry code.
- RP-2004 — Retired or internal registry code.
- RP-2020 — Retired or internal registry code.
- RP-3002 — Retired or internal registry code.
- RP-3007 — Retired or internal registry code.
- RP-4001 — Retired or internal registry code.
- RP-4002 — Retired or internal registry code.
- RP-4003 — Retired or internal registry code.
- RP-5002 — Retired or internal registry code.
- RP-5003 — Retired or internal registry code.
- RP-6001 — Retired or internal registry code.
- RP-6002 — Retired or internal registry code.
- RP-7001 — Retired or internal registry code.
- RP-7010 — Retired or internal registry code.
- RP-9003 — Retired or internal registry code.
- RP-9004 — Retired or internal registry code.
- RP-COMPUTE-MID-YEAR-OWNERSHIP-UNSUPPORTED — Retired or internal registry code.

