Errors
A failure is the same envelope with success: false, data: null and metadata.error. Codes are stable; messages are for people.
When to retry
When metadata.error.retryable is true, a retry after the Retry-After interval may succeed. AI Zeny never retries a request itself: each is sent to your PC once. Every BUSY operation except /execute-script is a read and may be retried. /execute-script is not side-effect-free and not retry-safe: a named script may call other systems from your PC, so none of its failures after sending is marked retryable, and retrying after a timeout may run the script, and its side effects, twice. An optional Idempotency-Key header (8–80 characters of A–Z a–z 0–9 - _) prevents a duplicate dispatch: a repeat with the same key is refused with 409, and results are never stored, so a finished request is never replayed. Send one with every /execute-script call you might retry.
209 codes
| Code | HTTP | Meaning |
|---|---|---|
Authentication and access (12) | ||
| TOKEN_INVALID | 401 | The token is missing, malformed, unknown or revoked. |
| TOKEN_EXPIRED | 401 | The token has expired. |
| ORGANIZATION_ACCESS_DISABLED | 403 | The organization is suspended or closed. |
| SUBSCRIPTION_REQUIRED | 403 | The organization has no subscription with API access. |
| SUBSCRIPTION_INACTIVE | 403 | The subscription is inactive. |
| SUBSCRIPTION_EXPIRED | 403 | The subscription has expired. |
| SUBSCRIPTION_SUSPENDED | 403 | The subscription is suspended. |
| SUBSCRIPTION_STATE_INVALID | 403 | The subscription state is invalid. |
| FEATURE_NOT_ENTITLED | 403 | The subscription does not include the feature the request needs. |
| COMPANY_NOT_ALLOWED | 403 | The company is outside the token’s scope. |
| TOKEN_PERMISSION_DENIED | 403 | The operation needs a permission the token does not have; details.required says which (read or write). Use a token with that permission. |
| AUTHORIZATION_UNAVAILABLE | 503 | The token’s permission could not be checked at that moment. Retry after Retry-After. |
Request (7) | ||
| API_VERSION_UNKNOWN | 404 | The version in the path is not supported; the supported versions are in metadata.error.details.supportedVersions. Nothing is redirected. |
| METHOD_NOT_ALLOWED | 405 | Use the documented HTTP method for this route. |
| BAD_REQUEST | 400 | The body is not a JSON object of the documented members and types. |
| INVALID_PARAMETER | 400 | A member is missing or outside its rule; metadata.error.field names it. Also returned for more than 5 financial years in one request. |
| REQUEST_TOO_LARGE | 413 | The body exceeds 16 KiB. |
| REQUEST_IN_PROGRESS | 409 | An Idempotency-Key was reused while its first request is still running; the repeat is refused, not dispatched again. |
| IDEMPOTENT_REPLAY_UNAVAILABLE | 409 | An Idempotency-Key was reused for a finished request; results are never stored, so it is not replayed. |
Relay to your PC (13) | ||
| DEVICE_NOT_ENROLLED | 409 | No active PC, or the selected X-AZ-Device-Id is not active in this organization. |
| VALIDATION_ERROR | 400 | An invalid relay header or request. Check X-AZ-Device-Id and Idempotency-Key. |
| DEVICE_AMBIGUOUS | 503 | Multiple PCs are active. Send the target PC Device ID in the X-AZ-Device-Id header. |
| DEVICE_OFFLINE | 503 | The PC is not connected (Retry-After: 30). |
| PUSHER_NOT_CONFIGURED | 409 | The organization’s Pusher setup is missing. |
| PUSHER_UNAVAILABLE | 503 | The organization’s Pusher setup is failing. |
| RELAY_TIMEOUT | 504 | The PC did not answer in time (it has 120 s to execute; the caller waits up to 140 s). Retry after Retry-After — except /execute-script, which may have run and is never marked retryable. |
| RESPONSE_TOO_LARGE | 502 | The answer exceeds 2 MiB: use a paged operation or narrow the request. |
| DEVICE_ERROR | 502 | The PC failed outside the documented codes; details.deviceErrorCode says how: REPORT_UNSUPPORTED (the PC’s AI Zeny version does not have the operation yet), LOCAL_TIMEOUT or COMPANY_LOCKED. |
| RELAY_BUSY | 429 | Too many requests in flight (Retry-After). |
| RELAY_DRAINING | 503 | The API server is restarting; retry shortly (Retry-After). |
| RATE_LIMITED | 429 | Too many requests per minute (Retry-After). |
| WRITE_RESULT_UNKNOWN | 504 | the PC’s answer to a write did not reach AI Zeny, so whether BUSY saved it is unknown. Never retry blind; read the master, or look the voucher up by its own reference, first. |
Reported by your PC (177) | ||
| FINANCIAL_YEAR_NOT_ALLOWED | 403 | The year is not allowed for the company, or the request covers more years than the plan (field additionalFinancialYear). |
| COMPANY_NOT_CONFIGURED | 404 | No company with that code is set up on the PC. |
| NOT_FOUND | 404 | The requested item does not exist (for example an unknown group or saved query name). |
| BUSY_COMPANY_NOT_FOUND | 404 | BUSY has no data for the company. |
| BUSY_FINANCIAL_YEAR_NOT_AVAILABLE | 404 | BUSY has no data for the financial year. |
| COMPANY_DISABLED | 409 | The company is disabled or needs correction on the PC. |
| COMPANY_CONNECTION_NOT_CONFIGURED | 409 | The saved sign-in to the company’s data cannot be opened (for example a SQL password that is not stored). |
| BUSY_COMPANY_LOCKED | 409 | BUSY holds a lock. |
| BUSY_SCHEMA_UNSUPPORTED | 422 | The BUSY data lacks a table or column the operation reads. |
| BUSY_DATA_INCONSISTENT | 422 | BUSY holds repeated rows where one is expected; the PC refuses rather than choosing one. |
| BUSY_GROUP_HIERARCHY_INVALID | 422 | A group hierarchy in BUSY is invalid and is refused explicitly. |
| PERIOD_OUTSIDE_FINANCIAL_YEAR | 422 | The requested period lies outside the financial year. |
| RESULT_TOO_LARGE | 422 | The result passes an operation’s own size bound (for example more than 1 000 units). |
| CUSTOM_SQL_REJECTED | 400 | The custom SQL is not a single read-only SELECT that passes validation on the PC. |
| CUSTOM_SQL_FAILED | 422 | The validated custom SQL failed when it ran. |
| UNSUPPORTED_VALUE | 422 | A value the operation does not support. |
| BUSY_UNAVAILABLE | 503 | BUSY’s server, driver or files cannot be reached. |
| BUSY_CONFIGURATION_UNAVAILABLE | 503 | The Windows app on the PC has no BUSY reader. |
| BUSY_TIMEOUT | 504 | The read on the PC passed its time bound. |
| BUSY_COM_* | 409–504 | BUSY PDF-printing refusals. The specific code below identifies whether the request needs different input, a PC repair or a retry. |
| BUSY_COM_SIGN_IN_UNSUPPORTED | 409 | BUSY PDF printing cannot use the company’s Windows-integrated SQL sign-in. |
| BUSY_COM_PDF_BLANK | 422 | BUSY produced a PDF with no visible text; choose or repair the print format. |
| BUSY_COM_PDF_FAILED | 502 | BUSY failed while producing the PDF; the request may be retried. |
| BUSY_COM_HELPER_FAILED | 502 | The Windows PDF helper failed; the request may be retried. |
| BUSY_COM_PDF_MISSING | 502 | BUSY reported success but the expected PDF was not produced; the request may be retried. |
| BUSY_COM_PDF_INVALID | 502 | The file produced by BUSY was not a valid PDF; the request may be retried. |
| BUSY_COM_DEFAULT_PRINTER_MISSING | 503 | The Windows service account needs a default printer before BUSY can print. |
| BUSY_COM_NOT_REGISTERED | 503 | The BUSY COM component is not registered on the PC. |
| BUSY_COM_INSTALLATION_INVALID | 503 | The BUSY installation used for printing needs repair. |
| BUSY_COM_FOLDER_NOT_WRITABLE | 503 | The Windows service cannot write to the configured temporary PDF folder. |
| BUSY_COM_RUNTIME_MISSING | 503 | A runtime required by BUSY PDF printing is missing on the PC. |
| BUSY_COM_HELPER_MISSING | 503 | The AI Zeny Windows PDF helper is missing. |
| BUSY_CREDENTIAL_UNAVAILABLE | 503 | The PC cannot open the saved BUSY credential; the request may be retried after it is available. |
| BUSY_COM_OPEN_FAILED | 503 | BUSY could not be opened for printing; the request may be retried. |
| BUSY_COM_QUEUE_TIMEOUT | 503 | The PDF print request waited too long behind another print; retry later. |
| BUSY_COM_TIMEOUT | 504 | BUSY PDF printing passed its time bound; retry later. |
| BUSY_PRINT_FORMAT_MISSING | 409 | No formatName was sent and the company has no STANDARD print format for that voucher type in BUSY (field formatName). Set the format up in BUSY or send formatName; not retryable. |
| MASTER_NAME_TAKEN | 409 | BUSY already has a master of that type with that name or alias (field name or alias). |
| MASTER_TYPE_MISMATCH | 409 | the code is a master of another type; nothing was changed. |
| MASTER_NAME_MISMATCH | 409 | the master’s name is not expectedName; nothing was changed. |
| MASTER_CHANGE_UNSUPPORTED | 409 | a change this version does not make (bill references, some opening stock changes). |
| MASTER_WRITE_PROVIDER_UNSUPPORTED | 409 | writes are offered for SQL Server companies with a SQL login and for Access companies; a few features are narrower and say so. |
| MASTER_REFERENCE_NOT_FOUND | 422 | a referenced group, unit, tax category, state or material centre does not exist. |
| MASTER_REFERENCE_AMBIGUOUS | 422 | several masters share that name in BUSY; give one a distinct name first. |
| OPTIONAL_FIELD_NOT_DEFINED | 422 | the slot is not a defined optional field of that master type in that financial year (field optionalFields.OFn or slot); nothing was written. |
| OPTIONAL_FIELD_UNSUPPORTED | 422 | an optional field AI Zeny does not write (for example a number with decimals); the message says why and nothing was written. |
| OPTIONAL_FIELD_VALUE_NOT_FOUND | 422 | the dropdown has no such value in that year; a master write never creates one. Add it with /product-optional-field-value-create or /account-optional-field-value-create first; nothing was written. |
| OPTIONAL_FIELD_VALUE_CHANGED | 409 | a dropdown value the request named changed in BUSY just before the save; nothing was written. |
| OPTIONAL_FIELD_VALUE_TAKEN | 409 | the dropdown already has a value with that name (compared without case); details.masterId is its code and nothing was created. |
| OPTIONAL_FIELD_CONFIGURATION_CHANGED | 409 | the year’s optional-field configuration changed while the write was prepared; read the definitions again. Nothing was written. |
| GST_AMOUNTS_INVALID | 422 | manual GST amounts or totals do not add up or do not match the configured rates within one paisa; nothing was written. |
| GST_MODE_UNSUPPORTED | 422 | the chosen taxCalculation / pricingMode is not yet offered with an original voucher, bill allocation, bill sundries or parameter-wise stock; nothing was written. |
| GST_CONFIGURATION_CHANGED | 409 | BUSY’s GST or series configuration changed while the write was prepared; nothing was written. |
| SALESMAN_CONFIGURATION_UNSUPPORTED | 409 | BUSY’s settings do not support a voucher-level salesman (field salesman); nothing was written. |
| SALESMAN_CONFIGURATION_CHANGED | 409 | the salesman configuration changed while the write was prepared; nothing was written. |
| DESCRIPTION_LINE_NOT_ALLOWED | 422 | the voucher series does not allow that many line description positions in BUSY; nothing was written. |
| WRITE_QUEUE_REQUEST_CONFLICT | 409 | this request id already holds a different queued submission on the PC; nothing was queued. |
| WRITE_QUEUE_UNAVAILABLE | 503 | the PC’s durable write queue is unavailable; nothing was queued. |
| PLAN_FEATURE_NOT_INCLUDED | 403 | the PC’s plan does not include BUSY writes; nothing was written. |
| PLAN_NOT_KNOWN | 409 | the PC does not yet know its plan, so it does not write; nothing was written. |
| BUSY_COM_RECOVERY_REQUIRED | 503 | BUSY’s automation on the PC needs recovery before it writes again; nothing was written. |
| BUSY_WRITE_TARGET_CHANGED | 409 | the BUSY company the PC writes to changed while the write was prepared; nothing was written. |
| BUSY_SETTING_REQUIRED | 422 | a BUSY setting the write needs is off; the message names it and nothing was written. |
| CONTACT_COUNTRY_REQUIRED | 422 | the contact’s stored country is not valid; send address.country. Nothing was written. |
| PURCHASE_ORDER_CONFIGURATION_CHANGED | 409 | BUSY’s purchase-order configuration changed while the write was prepared; nothing was written. |
| STOCK_TRANSFER_CONFIGURATION_CHANGED | 409 | BUSY’s stock-transfer configuration changed while the write was prepared; nothing was written. |
| MATERIAL_PARTY_CONFIGURATION_CHANGED | 409 | BUSY’s material issue or receipt configuration changed while the write was prepared; nothing was written. |
| BUSY_WRITE_REFERENCE_IN_PROGRESS | 409 | another write owns this sales order or sales invoice reference (field orderReference / invoiceReference); wait for its result and never resend it under another key. |
| BUSY_WRITE_REFERENCE_REVIEW_REQUIRED | 409 | an earlier write with this reference needs review and may have saved; never repost it — look it up by its reference. |
| BUSY_WRITE_ADMISSION_UNAVAILABLE | 503 | the PC could not admit the sales order or invoice; nothing started. |
| MASTER_REFERENCE_CHANGED | 409 | a group, unit or tax category an account or product write names changed in BUSY just before the save; nothing was written. |
| INTEGRATION_INVALID | 400 | the PC refused the integration request (name, reference, parameters or run id); nothing was accepted. |
| INTEGRATION_CONTENT_CONFLICT | 409 | a run with that runReference was accepted with different input; nothing new was accepted. |
| INTEGRATION_SCOPE_DENIED | 403 | the integration is disabled or not assigned to this company, the run belongs to another company or year, or its read scope is wider than the years signed (send them in additionalFinancialYear); nothing was accepted. |
| INTEGRATION_ACCEPTANCE_UNCONFIRMED | 504 | the PC could not confirm whether it accepted the run. Read its status, or send the identical input with the same runReference; never invent a new reference. |
| GROUP_PREDEFINED | 409 | one of BUSY’s standard groups (field groupId); it is never changed and nothing was written. |
| GROUP_PARENT_INVALID | 422 | a group cannot be moved under itself or a group below it (field parentGroup); nothing was written. |
| GROUP_PARENT_CHANGED | 409 | the parent group changed in BUSY just before the save (field parentGroup); nothing was written. |
| BUSY_WRITE_FAILED | 502 | BUSY did not save the master; nothing was saved. |
| BUSY_WRITE_UNVERIFIED | 502 | BUSY saved, but its read-back differs (details.masterId, or the voucher's orderId, invoiceId, receiptId, returnId, purchaseId, purchaseReturnId, paymentId, transferId or voucherId, and details.mismatchedFields); check it in BUSY. Never retry. |
| BUSY_WRITE_UNCERTAIN | 504 | BUSY stopped while saving, so whether it saved is unknown (details.reconciliation, with the id when found). Read the master, or look the voucher up by its own reference, before trying again. |
| SALES_ORDER_REFERENCE_TAKEN | 409 | A sales order of the company and year already holds this orderReference; details.orderId names it and nothing was written. A resend after an unknown outcome is safe because of this. |
| SALES_ORDER_MASTER_CHANGED | 409 | A customer, item, material centre or sale type named in the order changed in BUSY just before the save; nothing was saved. |
| SALES_ORDER_SALE_TYPE_UNSUPPORTED | 422 | The sale type must take GST per item on tax-exclusive rates (field saleType). |
| SALES_ORDER_TAX_UNSUPPORTED | 422 | An item’s tax category is not one plain GST rate AI Zeny calculates (field lines[i].item). |
| SALES_INVOICE_REFERENCE_TAKEN | 409 | A sales invoice of the company and year already holds this invoiceReference; details.invoiceId names it and nothing was written. A resend after an unknown outcome is safe because of this. |
| SALES_INVOICE_BILL_REFERENCE_TAKEN | 409 | With dueDate the invoice’s bill reference is named by invoiceReference, and the customer already has one with that number (field invoiceReference). Use another reference. |
| SALES_INVOICE_MASTER_CHANGED | 409 | A master named in the invoice changed in BUSY just before the save; nothing was saved. |
| SALES_INVOICE_SALE_TYPE_UNSUPPORTED | 422 | The sale type is not one AI Zeny calculates (field saleType). |
| SALES_INVOICE_TAX_UNSUPPORTED | 422 | An item’s tax category is not one AI Zeny calculates (field lines[i].item). |
| SALES_INVOICE_ITEM_UNSUPPORTED | 422 | BUSY keeps the item serial-number-wise, batch-wise or parameter-wise (field lines[i].item); enter that invoice in BUSY. |
| SALES_INVOICE_DUE_DATE_UNSUPPORTED | 422 | BUSY does not keep the customer bill by bill, so the invoice has no bill reference to carry dueDate (field dueDate). |
| RECEIPT_REFERENCE_TAKEN | 409 | A receipt of the company and year already holds this receiptReference; details.receiptId names it and nothing was written. |
| RECEIPT_NEW_REFERENCE_TAKEN | 409 | The party already has a reference with that number (field allocations[i].newReference.number). |
| RECEIPT_MASTER_CHANGED | 409 | A master named in the receipt changed in BUSY just before the save; nothing was saved. |
| RECEIPT_ACCOUNT_UNSUPPORTED | 422 | The receiving account must be cash in hand, bank or bank OD, and the party must be neither (field account or party). |
| RECEIPT_ALLOCATION_UNSUPPORTED | 422 | BUSY does not keep the party bill by bill, so the receipt cannot be allocated (field allocations). Leave allocations out. |
| RECEIPT_BILL_NOT_FOUND | 422 | The number is not one of the party’s outstanding bills (field allocations[i].bill.number). |
| RECEIPT_BILL_OVERSETTLED | 422 | The allocation is larger than the bill’s outstanding amount (field allocations[i].amount). |
| SALES_RETURN_REFERENCE_TAKEN | 409 | A sales return of the company and year already holds this returnReference; details.returnId names it and nothing was written. |
| SALES_RETURN_NEW_REFERENCE_TAKEN | 409 | The customer already has a reference with that number (field adjustment.number). |
| SALES_RETURN_MASTER_CHANGED | 409 | A master named in the return changed in BUSY just before the save; nothing was saved. |
| SALES_RETURN_ORIGINAL_NOT_FOUND | 404 | No sales invoice of the year has that originalInvoice voucher code or number. |
| SALES_RETURN_ORIGINAL_MISMATCH | 422 | The original invoice belongs to another customer (field originalInvoice). |
| SALES_RETURN_ORIGINAL_CANCELLED | 422 | The original invoice is cancelled in BUSY (field originalInvoice). |
| SALES_RETURN_ORIGINAL_AMBIGUOUS | 422 | Several of the customer’s invoices have that number; send originalInvoice.voucherId. |
| SALES_RETURN_HISTORY_AMBIGUOUS | 422 | Earlier returns cannot be attributed to one invoice, so the quantity still returnable is unknown; enter the return in BUSY. |
| SALES_RETURN_DATE_BEFORE_ORIGINAL | 422 | The return is dated before the original invoice (field date). |
| SALES_RETURN_SALE_TYPE_MISMATCH | 422 | The return’s sale type and the invoice’s differ in local and central tax (field saleType). |
| SALES_RETURN_QUANTITY_EXCEEDS_SALE | 422 | More than the invoice sold less earlier returns, or the item is not on the invoice (field lines[i].quantity or lines[i].item). |
| SALES_RETURN_SALE_TYPE_UNSUPPORTED | 422 | The sale type is not one AI Zeny calculates (field saleType). |
| SALES_RETURN_TAX_UNSUPPORTED | 422 | An item’s tax category is not one AI Zeny calculates (field lines[i].item). |
| SALES_RETURN_ITEM_UNSUPPORTED | 422 | BUSY keeps the item serial-number-wise, batch-wise or parameter-wise (field lines[i].item). |
| SALES_RETURN_ADJUSTMENT_UNSUPPORTED | 422 | BUSY does not keep the customer bill by bill, so the return cannot be adjusted (field adjustment). Leave adjustment out. |
| SALES_RETURN_BILL_NOT_FOUND | 422 | The original invoice has no outstanding bill of this customer (field adjustment). |
| SALES_RETURN_BILL_OVERSETTLED | 422 | The adjustment is larger than the original invoice’s outstanding amount (field adjustment.amount). |
| PURCHASE_REFERENCE_TAKEN | 409 | A purchase of the company and year already holds this purchaseReference; details.purchaseId names it and nothing was written. A resend after an unknown outcome is safe because of this. |
| PURCHASE_SUPPLIER_INVOICE_TAKEN | 409 | The supplier’s non-cancelled purchase of the year already records this supplier invoice number (field supplierInvoice.number); details.purchaseId names it. The same bill is not entered twice. |
| PURCHASE_NUMBER_TAKEN | 409 | The voucher number (or the supplier invoice number used as the default) is already in the purchase series (field voucherNumber). Send your own voucherNumber. |
| PURCHASE_BILL_REFERENCE_TAKEN | 409 | The supplier already holds a bill reference with the supplier invoice number; BUSY would merge the payable into it. |
| PURCHASE_MASTER_CHANGED | 409 | A master named in the purchase changed in BUSY just before the save; nothing was saved. |
| PURCHASE_SERIES_UNSUPPORTED | 422 | The purchase series numbers automatically; AI Zeny creates purchases only in a manually numbered series (field voucherSeries). |
| PURCHASE_SUPPLIER_UNSUPPORTED | 422 | The supplier is cash in hand, a bank or a bank OD account, or its group chain is incomplete (field supplier). |
| PURCHASE_TYPE_UNSUPPORTED | 422 | The purchase type must take GST per item on tax-exclusive rates, not exempt, nil, RCM, import, SEZ or multi-rate (field purchaseType). |
| PURCHASE_TAX_UNSUPPORTED | 422 | An item’s tax category is not one plain GST rate AI Zeny calculates (field lines[i].item). |
| PURCHASE_ITEM_UNSUPPORTED | 422 | BUSY keeps the item by serial number or batch, with more than one parameter field, or with a unit conversion other than 1 (field lines[i].item). |
| PURCHASE_PARAMETERS_INVALID | 422 | The parameter rows are missing, repeated, do not add up to the line’s quantity, use a value outside the company’s list, or belong to an item that is not parameter-wise (field lines[i].parameters…). |
| PURCHASE_BILL_SUNDRY_UNSUPPORTED | 422 | A bill sundry is not one of the proven kinds (one discount by percent, fixed charges, one round-off up to 0.99), or its discount cannot be spread (field billSundries[i]…). |
| PURCHASE_DUE_DATE_UNSUPPORTED | 422 | BUSY does not keep the supplier bill by bill, so the purchase has no payable to carry dueDate (field dueDate). |
| PURCHASE_RETURN_REFERENCE_TAKEN | 409 | A purchase return of the company and year already holds this returnReference; details.purchaseReturnId names it and nothing was written. |
| PURCHASE_RETURN_NUMBER_TAKEN | 409 | The debit-note number is already in the purchase-return series (field voucherNumber). |
| PURCHASE_RETURN_NEW_REFERENCE_TAKEN | 409 | The supplier already has a bill row with that number (field adjustment.newReference.number); BUSY would merge it. |
| PURCHASE_RETURN_MASTER_CHANGED | 409 | A master named in the purchase return changed in BUSY just before the save; nothing was saved. |
| PURCHASE_RETURN_ORIGINAL_NOT_FOUND | 404 | No purchase of the year has that originalPurchase voucher code or supplier invoice number. |
| PURCHASE_RETURN_SERIES_UNSUPPORTED | 422 | The purchase-return series numbers automatically; only a manually numbered series is offered (field voucherSeries). |
| PURCHASE_RETURN_SUPPLIER_UNSUPPORTED | 422 | The supplier is cash in hand, a bank or a bank OD account, or its group chain is incomplete (field supplier). |
| PURCHASE_RETURN_TYPE_UNSUPPORTED | 422 | The purchase type is not one AI Zeny calculates (field purchaseType). |
| PURCHASE_RETURN_TAX_UNSUPPORTED | 422 | An item’s tax category is not one AI Zeny calculates (field lines[i].item). |
| PURCHASE_RETURN_ITEM_UNSUPPORTED | 422 | BUSY keeps the item by serial number or batch, with several parameter fields, or with a unit conversion other than 1 (field lines[i].item). |
| PURCHASE_RETURN_PARAMETERS_INVALID | 422 | The return’s parameter rows are missing, repeated, do not add up, or are outside the company’s setup (field lines[i].parameters…). |
| PURCHASE_RETURN_BILL_SUNDRY_UNSUPPORTED | 422 | A discount by percent, a discount or Rounded Off (+) master, or another unproven kind; only fixed charges and one Rounded Off (-) are offered (field billSundries[i]…). |
| PURCHASE_RETURN_ORIGINAL_MISMATCH | 422 | The original purchase belongs to another supplier, or its local or central kind differs from the return’s purchase type. |
| PURCHASE_RETURN_ORIGINAL_CANCELLED | 422 | The original purchase is cancelled in BUSY (field originalPurchase). |
| PURCHASE_RETURN_ORIGINAL_AMBIGUOUS | 422 | Several of the supplier’s purchases carry that supplier invoice number; send originalPurchase.voucherId. |
| PURCHASE_RETURN_DATE_BEFORE_ORIGINAL | 422 | The return is dated before the original purchase (field date). |
| PURCHASE_RETURN_HISTORY_AMBIGUOUS | 422 | Earlier returns cannot be attributed to the original purchase, so the quantity still returnable is unknown; enter the return in BUSY. |
| PURCHASE_RETURN_QUANTITY_EXCEEDS_PURCHASE | 422 | More than the original purchase less earlier returns, or an item or parameter value it does not have (field lines[i].quantity, lines[i].item or lines[i].parameters[j].quantity). |
| PURCHASE_RETURN_ADJUSTMENT_REQUIRED | 422 | BUSY keeps the supplier bill by bill, so the return’s whole total must be allocated (field adjustment or adjustment.newReference). |
| PURCHASE_RETURN_ADJUSTMENT_UNSUPPORTED | 422 | BUSY does not keep the supplier bill by bill (field adjustment), or a new reference was given its own dueDate (field adjustment.newReference.dueDate). |
| PURCHASE_RETURN_BILL_NOT_FOUND | 422 | The original purchase has no payable of the supplier still owing (field adjustment). |
| PURCHASE_RETURN_BILL_OVERSETTLED | 422 | The amount is larger than what the original purchase’s payable still owes (field adjustment.againstOriginalPurchase.amount). |
| PAYMENT_REFERENCE_TAKEN | 409 | A payment of the company and year already holds this paymentReference; details.paymentId names it and nothing was written. |
| PAYMENT_NUMBER_TAKEN | 409 | The voucher number (or the paymentReference used as the default) is already in the payment series (field voucherNumber). |
| PAYMENT_NEW_REFERENCE_TAKEN | 409 | The payee already has a reference with that number (field allocations[i].newReference.number). |
| PAYMENT_MASTER_CHANGED | 409 | The account, payee or series named in the payment changed in BUSY just before the save; nothing was saved. |
| PAYMENT_ACCOUNT_UNSUPPORTED | 422 | The paying account must be cash in hand, bank or bank OD, and the payee must be neither, nor the paying account (field account or payee). |
| PAYMENT_ALLOCATION_UNSUPPORTED | 422 | BUSY does not keep the payee bill by bill, so the payment cannot be allocated (field allocations). Leave allocations out. |
| PAYMENT_BILL_NOT_FOUND | 422 | The number is not one of the payee’s outstanding bills (field allocations[i].bill.number). |
| PAYMENT_BILL_OVERSETTLED | 422 | The allocation is larger than the bill’s outstanding amount (field allocations[i].amount). |
| PAYMENT_SERIES_UNSUPPORTED | 422 | The payment series numbers automatically, or its numbering is unknown; use a manually numbered series (field voucherSeries). |
| BUSY_REPORT_PROVIDER_UNSUPPORTED | 409 | BUSY report PDFs are available for SQL Server companies only. |
| BUSY_REPORT_ACCOUNT_CHANGED | 409 | The account changed in BUSY just before the report was printed (field account); nothing was printed. Check it and try again. |
| REPORT_ACCOUNT_NOT_BILL_BY_BILL | 422 | BUSY does not keep the account bill by bill, so it has no bill-wise report (field account). Use the Account Ledger PDF for it. |
| SAVED_QUERY_PROVIDER_MISSING | 409 | The saved query has no definition for the company’s database type (field queryName). |
| SAVED_QUERY_INVALID | 409 | The saved query’s definition no longer passes the PC’s checks (field queryName). |
| SCRIPT_NOT_FOUND | 404 | No script with that name exists on the PC (field script or scriptName). |
| SCRIPT_NOT_ASSIGNED | 409 | The script is of the other kind or is not assigned to this company and operation. |
| SCRIPT_DISABLED | 409 | The script or its assignment is disabled. |
| SCRIPT_INVALID | 409 | A stored script no longer passes its check. |
| SCRIPT_FAILED | 422 | The script raised an error (message and line); the original data is never returned instead. Not retryable. |
| SCRIPT_OUTPUT_INVALID | 422 | The script returned something that is not a JSON object or array (the path is named). |
| SCRIPT_OUTPUT_TOO_LARGE | 422 | The script’s answer passes the PC’s output bound. |
| SCRIPT_INPUT_TOO_LARGE | 422 | The data given to the script passes the PC’s input bound. |
| SCRIPT_LIMIT_EXCEEDED | 422 | The script passed a statement, memory, depth or nested-call limit. |
| SCRIPT_RECURSION | 422 | A named script called itself or went more than 3 scripts deep. |
| SCRIPT_SCOPE_DENIED | 403 | A nested call named a company or year the request does not cover. |
| SCRIPT_TIMEOUT | 504 | The script run passed its 120 s bound. Not retryable. |