Error Codes

Format

  • Marketplace codes: EQ-MKT- + a 7‑digit number whose first three digits encode the HTTP status (e.g. EQ-MKT-4040001 → 404). Some instance‑domain codes are reused from the User Service with the EQ-INS- prefix.
  • One outlier operational code is returned only on cold‑start init failure: EQ-MKT-5030001 (503, returned before the service is ready).

Error response shape

Every error response carries the fields below, plus an Error-Code response header. The HTTP status is derived from the code.

Field Description
errorCode The EQ-MKT- / EQ-INS- code
errorMessage Human‑readable, localized message (falls back to the raw code)
validations Optional array of field‑level messages
details Optional extension/validator details

errorMessage is localized, falling back to the raw code. When an external validator supplies human‑readable details, the first string overrides errorMessage.

HTTP‑status quick reference

HTTP Meaning Example codes
200 Informational success signal EQ-MKT-2000149 (provider failover occurred)
400 Bad request / missing/invalid input EQ-MKT-4000040, EQ-MKT-4000002, EQ-INS-4000035
401 Auth / API‑key failures EQ-MKT-4010108, EQ-MKT-4010158, EQ-MKT-4010094
403 Forbidden / not approved / not active EQ-MKT-4030033, EQ-MKT-4030095, EQ-MKT-4030163
404 Not found EQ-MKT-4040001, EQ-INS-4040001, EQ-MKT-4040085
409 Conflict / already exists EQ-MKT-4090004, EQ-MKT-4090160, EQ-MKT-4090104
410 Gone (deprecated/archived) EQ-MKT-4100008, EQ-MKT-4100050
422 Validation failed / semantic error EQ-MKT-4220005, EQ-MKT-4220048, EQ-MKT-4220117
500 Internal error / mutation failed EQ-MKT-5000037, EQ-MKT-5000060
502 Upstream app invocation failed EQ-MKT-5020141
503 Service/endpoint unavailable EQ-MKT-5030087, EQ-MKT-5030145, EQ-MKT-5030157
504 Timeout EQ-MKT-5040092

Instance errors (reused EQ-INS- prefix)

Code HTTP Constant When How to resolve
EQ-INS-4040001 404 INSTANCE_NOT_FOUND Instance id not found Verify the instance id
EQ-INS-4000035 400 INVALID_INSTANCE_ID Not a valid ObjectId Send a valid ObjectId
EQ-INS-4090002 409 INSTANCE_NAME_ALREADY_EXISTS Duplicate instance name Use a unique name
EQ-INS-5000031 500 INSTANCE_INTERNAL_SERVER_ERROR Unexpected instance error Retry / check logs
EQ-INS-4220003 422 INSTANCE_VALIDATION_FAILED Instance data invalid Fix validation errors
EQ-INS-4220007 422 INVALID_INSTANCE_NAME_FORMAT Bad name format Match required format
EQ-INS-4220006 422 INVALID_INSTANCE_STATUS Bad status value Use a valid status
EQ-INS-4000004 400 INSTANCE_ID_REQUIRED Missing instance id Provide instance id

(These support the not‑currently‑wired instance module; see §4.)

App registry & generic errors

Code HTTP Constant When How to resolve
EQ-MKT-4040001 404 APP_NOT_FOUND App id not found Verify appId
EQ-MKT-4000002 400 APP_ID_REQUIRED Missing app id Provide appId
EQ-MKT-4000003 400 INVALID_APP_ID Bad app id format Fix appId
EQ-MKT-4090004 409 APP_NAME_ALREADY_EXISTS Duplicate app name Use a unique name
EQ-MKT-4090039 409 APP_ALREADY_EXISTS Duplicate appId Use a new appId
EQ-MKT-4000040 400 INVALID_INPUT Input validation failed Fix the request body
EQ-MKT-5000041 500 INTERNAL_ERROR Internal error Retry / check logs
EQ-MKT-4220005 422 APP_VALIDATION_FAILED App data invalid Fix validation errors
EQ-MKT-4000006 400 APP_DATA_REQUIRED Empty body Send app data
EQ-MKT-4090007 409 APP_VERSION_ALREADY_EXISTS Version exists Bump the version
EQ-MKT-4100008 410 APP_DEPRECATED App deprecated Use a supported app/version
EQ-MKT-4000045 400 INVALID_PAGINATION Bad page/size Use valid pagination
EQ-MKT-4000038 400 INVALID_ID Bad id (generic) Send a valid id
EQ-MKT-4040036 404 ROUTE_NOT_FOUND Unknown route Check method + path
EQ-MKT-5000037 500 INTERNAL_SERVER_ERROR Unexpected error Retry / check logs
EQ-MKT-5000060 500 APP_UPDATE_FAILED Update returned no result Retry
EQ-MKT-5000061 500 APP_DELETE_FAILED Delete returned no result Retry

Approval workflow, versions, contracts, interfaces

Code HTTP Constant When How to resolve
EQ-MKT-4220048 422 INVALID_APP_STATUS_TRANSITION Illegal status transition Follow the transition map
EQ-MKT-4030049 403 APPROVAL_REQUIRED App not yet approved Approve first
EQ-MKT-4100050 410 APP_ARCHIVED App archived Use another app
EQ-MKT-4030051 403 APP_REJECTED App rejected Re‑submit after fixes
EQ-MKT-4030095 403 APP_NOT_APPROVED Enable attempted on non‑approved app Approve before enabling
EQ-MKT-4040056 404 APP_VERSION_NOT_FOUND Version not found Check version string
EQ-MKT-4220057 422 INVALID_VERSION_FORMAT Not SemVer Use SemVer
EQ-MKT-4220101 422 APP_VERSION_DEPRECATED Switching to a deprecated version Pick an active version
EQ-MKT-4090102 409 CANNOT_DEPRECATE_ACTIVE_VERSION Deprecating the active version Switch active version first
EQ-MKT-4040050 404 INTERFACE_NOT_FOUND Interface missing Register the interface
EQ-MKT-4090051 409 INTERFACE_ALREADY_EXISTS Duplicate interface id Use a new id
EQ-MKT-4090052 409 INTERFACE_NAME_VERSION_EXISTS Duplicate name+version Bump version
EQ-MKT-4220088 422 INTERFACE_VERSION_MISMATCH App doesn’t support interface/version Align versions
EQ-MKT-4040052 404 CONTRACT_NOT_FOUND Contract missing Register the contract
EQ-MKT-4090053 409 CONTRACT_ALREADY_EXISTS Duplicate contract Use a new id
EQ-MKT-4220054 422 CONTRACT_VALIDATION_FAILED App fails contract Implement required ops
EQ-MKT-4000055 400 CONTRACT_DATA_REQUIRED Empty contract body Send contract data
EQ-MKT-4220097 422 INVALID_CONTRACT Bad OpenAPI/JSON‑Schema Fix the contract doc

Config overrides, business/store, enablement

Code HTTP Constant When How to resolve
EQ-MKT-4040058 404 CONFIG_OVERRIDE_NOT_FOUND Override id missing Verify overrideId
EQ-MKT-4090059 409 CONFIG_OVERRIDE_ALREADY_EXISTS Duplicate override Patch existing instead
EQ-MKT-4220140 422 CONFIG_SCHEMA_VALIDATION_FAILED Settings violate configurationSchema Fix settings
EQ-MKT-4040009 / 4090010 / 4220011 / 4000012 404/409/422/400 APP_CONFIG_NOT_FOUND / _ALREADY_EXISTS / _VALIDATION_FAILED / _DATA_REQUIRED App config CRUD problems Adjust config request
EQ-MKT-4030013 403 APP_NOT_ENABLED_FOR_BUSINESS Configuring a non‑enabled app Enable at business level first
EQ-MKT-4000014 / 4000015 / 4040016 400/400/404 BUSINESS_ID_REQUIRED / INVALID_BUSINESS_ID / BUSINESS_NOT_FOUND Business scoping issues Provide a valid businessId
EQ-MKT-4090017 409 APP_ALREADY_ENABLED_FOR_BUSINESS Re‑enabling No action needed
EQ-MKT-4040018 404 APP_NOT_ENABLED_FOR_BUSINESS_DISABLE Disabling a non‑enabled app Nothing to disable
EQ-MKT-4000019 / 4000020 / 4040021 400/400/404 STORE_ID_REQUIRED / INVALID_STORE_ID / STORE_NOT_FOUND Store scoping issues Provide a valid storeId
EQ-MKT-4090084 409 APP_ALREADY_ENABLED App already enabled for store+interface No action needed
EQ-MKT-4040085 404 ENABLEMENT_NOT_FOUND Enablement record missing Enable first
EQ-MKT-4000086 400 ROLLBACK_NOT_AVAILABLE No previous version Nothing to roll back to
EQ-MKT-4090104 409 APP_HAS_ACTIVE_ENABLEMENTS Deleting an app still enabled Disable everywhere first
EQ-MKT-4220103 422 DEPENDENCY_NOT_ENABLED Required dependency app not enabled Enable the dependency
EQ-MKT-4040105 404 AUDIT_ENTRY_NOT_FOUND Audit entry missing Check the entry id

Authorization & authentication

Code HTTP Constant When How to resolve
EQ-MKT-4010108 401 AUTHENTICATION_REQUIRED Missing/invalid JWT Send a valid bearer token
EQ-MKT-4030033 403 UNAUTHORIZED_APP_ACCESS Lacking privilege / not admin Grant privilege
EQ-MKT-4030034 403 UNAUTHORIZED_BUSINESS_ACCESS No access to business Grant access
EQ-MKT-4030035 403 UNAUTHORIZED_STORE_ACCESS No access to store Grant access
EQ-MKT-4010158 401 API_KEY_INVALID Bad/unknown/revoked API key Issue a new key
EQ-MKT-4010159 401 API_KEY_EXPIRED Key past expiry Rotate the key
EQ-MKT-4030163 403 APP_NOT_ACTIVE Owning app deprecated/archived/rejected/deleted Reactivate the app
EQ-MKT-4220162 422 API_KEY_LIMIT_REACHED >5 active keys Revoke an old key
EQ-MKT-4090160 409 APP_SELF_REGISTER_CONFLICT appId+version already registered Bump version
EQ-MKT-4010094 401 HMAC_SIGNATURE_INVALID HMAC verify failed Fix signing secret

Connector artifact / deployment

Code HTTP Constant When
EQ-MKT-4000030 / 4220031 400/422 LAMBDA_ARN_REQUIRED / INVALID_LAMBDA_ARN Lambda deployment missing/invalid ARN
EQ-MKT-4000032 400 NPM_PACKAGE_REQUIRED Bundled deployment missing npm package
EQ-MKT-4000062 400 APP_NOT_BUNDLED_TYPE Operation needs bundled type
EQ-MKT-4040063 404 CONNECTOR_ARTIFACT_NOT_FOUND No connector artifact on app
EQ-MKT-4000064 400 NPM_PACKAGE_OR_CONNECTOR_ARTIFACT_REQUIRED Bundled needs npm or artifact
EQ-MKT-4000065 400 BASE_URL_REQUIRED External deployment needs baseUrl
EQ-MKT-4000066–4000068 400 CONNECTOR_ARTIFACT_*_REQUIRED packageName/version/registryUrl missing
EQ-MKT-4220069–4220072 422 CONNECTOR_ARTIFACT_*_INVALID deploymentType/semver/packageName/registryUrl invalid
EQ-MKT-4000073 400 CONNECTOR_ARTIFACT_DOWNLOAD_URL_REQUIRED_FOR_EXTERNAL External artifact missing downloadUrl
EQ-MKT-4040098 / 4220100 404/422 CONNECTOR_CLASS_NOT_FOUND / INVALID_CONNECTOR_CLASS_FORMAT Bundled connector class load/format
EQ-MKT-4000099 400 INVOCATION_TARGET_REQUIRED External app missing invocationTarget
EQ-MKT-5000080 500 LAMBDA_CLIENT_NOT_CONFIGURED Missing AWS_REGION for Lambda client
EQ-MKT-4000081 400 UNSUPPORTED_DEPLOYMENT_TYPE Provisioning can’t handle type

Payment configuration & multi‑provider routing

Code HTTP Constant When
EQ-MKT-4220110 422 PAYMENT_CONTRACT_MISSING_OPERATIONS Payment contract ops missing
EQ-MKT-4000111 400 INVALID_PAYMENT_OPERATION Bad operation name
EQ-MKT-4000112–4000115 400 PROVIDER_TYPE / MERCHANT_ID / API_KEY / API_SECRET _REQUIRED Missing payment fields
EQ-MKT-4220116 422 INVALID_CURRENCY_CODE Bad ISO‑4217 currency
EQ-MKT-4220117 422 APP_NOT_PAYMENT_CAPABLE App lacks PAYMENT capability
EQ-MKT-4040118 404 APP_NOT_ENABLED_FOR_STORE App not enabled for store
EQ-MKT-4220119 / 4220120 422 PRIMARY_PROVIDER_REQUIRED / MULTIPLE_PRIMARY_PROVIDERS Exactly one primary required
EQ-MKT-4220121 / 4220122 422 DUPLICATE_PROVIDER_PRIORITY / DUPLICATE_PROVIDER_TYPE Duplicate priority/type
EQ-MKT-4220123 / 4220124 422 WEIGHTED_SHARES_REQUIRED / _INVALID_SUM Weighted routing shares
EQ-MKT-4000125 400 DEFAULT_PROVIDER_NOT_FOUND Default provider not in list
EQ-MKT-4040144 404 NO_PROVIDER_FOR_PAYMENT_TYPE No provider for type
EQ-MKT-5030145 503 ALL_PROVIDERS_UNAVAILABLE All circuits open/disabled
EQ-MKT-4040146 404 PROVIDER_NOT_FOUND_IN_CONFIG Provider not in config
EQ-MKT-4220147 422 CANNOT_DISABLE_ALL_PROVIDERS Must keep ≥1 enabled
EQ-MKT-4040148 404 MULTI_PROVIDER_CONFIG_NOT_FOUND No multi‑provider config
EQ-MKT-2000149 200 PROVIDER_FAILOVER_OCCURRED Processed via secondary (info)
EQ-MKT-4040150 404 PAYMENT_CONFIG_NOT_FOUND No payment config for store
EQ-MKT-4220151 422 PAYMENT_CONFIG_REQUIRED_FOR_ENABLE Configure payment before enable
EQ-MKT-4220152 422 APP_DRAINING App draining; new txns rejected
EQ-MKT-4220153 422 PAYMENT_CONFIG_VALIDATION_ERRORS Multiple payment validation errors

Notification configuration

Code HTTP Constant When
EQ-MKT-4040126 404 NOTIFICATION_APP_NOT_ENABLED Notification app not enabled for store
EQ-MKT-4220127 422 NOTIFICATION_CONFIG_NOT_INITIALIZED Enable the app first
EQ-MKT-4040128 / 4090129 404/409 NOTIFICATION_EVENT_NOT_FOUND / _DUPLICATE_NAME Event lookup/duplicate
EQ-MKT-4000130 / 4000143 400 NOTIFICATION_EVENT_NAME_REQUIRED / _NAME_LENGTH Event name missing / length 2–255
EQ-MKT-4000131 / 4000132 400 NOTIFICATION_EVENT_INVALID_STATUS / _INVALID_DOMAIN Bad status/domain
EQ-MKT-4040133 / 4090134 404/409 NOTIFICATION_ACTION_NOT_FOUND / _DUPLICATE_NAME Action lookup/duplicate
EQ-MKT-4000135–4000137 400 NOTIFICATION_ACTION_NAME / _CHANNEL / _TEMPLATE Missing/invalid action fields
EQ-MKT-4040138 / 4000139 404/400 NOTIFICATION_ACTION_EVENT_NOT_FOUND / _INVALID_STATUS Action references bad event/status

App invocation, health, webhooks, service map

Code HTTP Constant When
EQ-MKT-5020141 502 APP_INVOCATION_FAILED External app invocation failed
EQ-MKT-4220142 422 APP_HMAC_SECRET_MISSING External app HMAC secret not set
EQ-MKT-5030087 503 ENDPOINT_UNREACHABLE External endpoint health check failed
EQ-MKT-5030089 503 DEFAULT_APP_UNAVAILABLE Default app failover exhausted
EQ-MKT-5030157 503 APP_HEALTH_CHECK_FAILED Health check failed
EQ-MKT-5000090 500 EVENT_SYNC_FAILED Event delivery to service failed
EQ-MKT-4220091 422 EXTENSION_VALIDATION_FAILED Pre‑enablement webhook validation failed
EQ-MKT-5040092 504 WEBHOOK_TIMEOUT Validation webhook timed out
EQ-MKT-4220093 422 INVALID_WEBHOOK_RESPONSE Webhook returned bad format
EQ-MKT-4040082 / 5000083 404/500 WEBHOOK_NOT_FOUND / WEBHOOK_UPDATE_FAILED Webhook lookup/update
EQ-MKT-4090105 409 WEBHOOK_HAS_PENDING_DELIVERIES Can’t delete with pending deliveries
EQ-MKT-5030106 503 WEBHOOK_URL_UNREACHABLE Callback URL unreachable
EQ-MKT-4000107 400 INVALID_EVENT_TYPES Bad webhook event types
EQ-MKT-4220096 422 APP_REGISTRATION_FAILED Contract/health check on registration
EQ-MKT-4220020 / 4220021 / 4220022 422 SERVICE_INSTANCE_MAP_INVALID_SERVICE / _INVALID_OBJECTID / _REQUIRED serviceInstanceMap validation
EQ-MKT-4000046 / 4000047 400 SECURITY_INVALID_CONTENT_LENGTH / SECURITY_PROTOCOL_UPGRADE_NOT_ALLOWED Request‑smuggling guards

(App‑config / contract / interface mutation failures EQ-MKT-50000745000079 all map to HTTP 500.)


Revision History
2026-08-05 | JP – Created the page and added the content.