Update User CIP Status (PATCH /user/update-cip-status)
Error Code
HTTP Status
Description
Example Payload
NOT_ALLOWED_FOR_ANONYMOUS_USER
400
This action cannot be performed on anonymous users
{"status": "error", "error": {"errorType": "USER_ERROR", "errorCode": "NOT_ALLOWED_FOR_ANONYMOUS_USER", "message": "Action not allowed for anonymous user."}}
NOT_ALLOWED_FOR_CIP_STATUS
400
User's current CIP status does not allow this update
{"status": "error", "error": {"errorType": "USER_ERROR", "errorCode": "NOT_ALLOWED_FOR_CIP_STATUS", "message": "Action not allowed for user with CIP status: pend."}}
CIP_STATUS_NOT_ELIGIBLE_FOR_UPDATE
400
CIP status cannot be updated (>30 days since decision)
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "CIP_STATUS_NOT_ELIGIBLE_FOR_UPDATE", "message": "The user's CIP status is not eligible to be updated."}}
USER_NOTHING_TO_MODIFY
400
No changes detected (CIP status is already the requested value)
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "USER_NOTHING_TO_MODIFY", "message": "Nothing to modify for user"}}
Archive User (PATCH /user/archive)
Error Code
HTTP Status
Description
Example Payload
USER_ARCHIVE_ACTIVE_ACCOUNTS_EXIST
400
Cannot archive user with active accounts
{"status": "error", "error": {"errorType": "NOT_FOUND", "errorCode": "USER_ARCHIVE_ACTIVE_ACCOUNTS_EXIST", "message": "User has active accounts and cannot be archived."}}
USER_NOT_FOUND
404
The specified user was not found
{"status": "error", "error": {"errorType": "NOT_FOUND", "errorCode": "USER_NOT_FOUND", "message": "Active user not found."}}
Retrieve ID Number (GET /user/retrieve-id-number)
Error Code
HTTP Status
Description
Example Payload
NOT_ALLOWED_FOR_ANONYMOUS_USER
400
Cannot retrieve ID for anonymous users
{"status": "error", "error": {"errorType": "USER_ERROR", "errorCode": "NOT_ALLOWED_FOR_ANONYMOUS_USER", "message": "Action not allowed for anonymous user."}}
USER_NOT_FOUND
404
The specified user was not found
{"status": "error", "error": {"errorType": "NOT_FOUND", "errorCode": "USER_NOT_FOUND", "message": "Active user not found."}}
Retrieve ID Update History (GET /user/retrieve-id-update-history)
Error Code
HTTP Status
Description
Example Payload
NOT_ALLOWED_FOR_ANONYMOUS_USER
400
Cannot retrieve ID history for anonymous users
{"status": "error", "error": {"errorType": "USER_ERROR", "errorCode": "NOT_ALLOWED_FOR_ANONYMOUS_USER", "message": "Action not allowed for anonymous user."}}
USER_NOT_FOUND
404
The specified user was not found
{"status": "error", "error": {"errorType": "NOT_FOUND", "errorCode": "USER_NOT_FOUND", "message": "Active user not found."}}
Confirm ID Number (POST /user/confirm-id-number)
Error Code
HTTP Status
Description
Example Payload
NOT_ALLOWED_FOR_ANONYMOUS_USER
400
Cannot confirm ID for anonymous users
{"status": "error", "error": {"errorType": "USER_ERROR", "errorCode": "NOT_ALLOWED_FOR_ANONYMOUS_USER", "message": "Action not allowed for anonymous user."}}
Account Endpoints
Create Account (POST /account/create)
Error Code
HTTP Status
Description
Example Payload
PRODUCT_NOT_ELIGIBLE
400
The product is not eligible for this action (e.g., anonymous product)
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "PRODUCT_NOT_ELIGIBLE", "message": "Product not eligible for this action: createAccount.", "errorData": {"action": "createAccount"}}}
INVALID_SHIPPING_OPTION
400
The specified shipping option is not available for this product
{"status": "error", "error": {"errorType": "USER_ERROR", "errorCode": "NOT_ALLOWED_FOR_CIP_STATUS", "message": "Action not allowed for user with CIP status: pend.", "errorData": {"cipStatus": "pend"}}}
WATCHLIST_CONFIRMED_OR_PENDING_REVIEW
400
User is on watchlist and cannot create account
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "WATCHLIST_CONFIRMED_OR_PENDING_REVIEW", "message": "Action is blocked due to watchlist status: confirmed", "errorData": {"watchlistStatus": "confirmed"}}}
PRODUCT_COLLATERAL_CONFIG_ID_NOT_FOUND
400
The specified collateral config ID was not found on the product
{"status": "error", "error": {"errorType": "NOT_FOUND", "errorCode": "PRODUCT_COLLATERAL_CONFIG_ID_NOT_FOUND", "message": "Collateral config id: config123 not found on product id: prod456", "errorData": {"collateralConfigId": "config123", "productId": "prod456"}}}
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACCOUNT_STATUS_NOT_ELIGIBLE", "message": "Account status for accountId: acc123 not eligible for this action: edit."}}
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "CARD_STATUS_NOT_ELIGIBLE", "message": "Card status not eligible for this modify action: activation."}}
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "CARD_STATUS_NOT_ELIGIBLE", "message": "Card status not eligible for this modify action: freeze."}}
Replace Card (POST /card/replace)
Error Code
HTTP Status
Description
Example Payload
CARD_STATUS_NOT_ELIGIBLE
400
Card status does not allow replacement (e.g., already closed)
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "CARD_STATUS_NOT_ELIGIBLE", "message": "Card status not eligible for this modify action: replace.", "errorData": {"modifyReason": "replace"}}}
Card cannot be reissued (closed or already has pending reissue)
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "CARD_STATUS_NOT_ELIGIBLE", "message": "Card status not eligible for this modify action: reissue.", "errorData": {"modifyReason": "Card has already been reissued"}}}
Card must be active or frozen to reset PIN fail count
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "CARD_STATUS_NOT_ELIGIBLE", "message": "Card status not eligible for this modify action: ResetPINFailCard.", "errorData": {"modifyReason": "ResetPINFailCard"}}}
Mobile Wallet Provisioning (POST /card/mobile-wallet-provisioning)
Error Code
HTTP Status
Description
Example Payload
CARD_STATUS_NOT_ELIGIBLE
400
Card status does not allow mobile wallet provisioning
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "CARD_STATUS_NOT_ELIGIBLE", "message": "Card status not eligible for this modify action: mobileWalletProvision.", "errorData": {"modifyReason": "mobileWalletProvision"}}}
Get Card Display URL (POST /card/get-card-display-url)
Error Code
HTTP Status
Description
Example Payload
CARD_STATUS_NOT_ELIGIBLE
400
Card status does not allow fetching display URL (e.g., closed)
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "CARD_STATUS_NOT_ELIGIBLE", "message": "Card status not eligible for this modify action: getDisplayUrl."}}
Get Card PIN Change Token (POST /card/get-card-pin-change-token)
Error Code
HTTP Status
Description
Example Payload
CARD_STATUS_NOT_ELIGIBLE
400
Card status does not allow PIN change (e.g., closed)
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "CARD_STATUS_NOT_ELIGIBLE", "message": "Card status not eligible for this modify action: getCardPinUrl.", "errorData": {"modifyReason": "getCardPinUrl"}}}
{"status": "error", "error": {"errorType": "INPUT_ERROR", "errorCode": "CARD_STATUS_NOT_ELIGIBLE", "message": "Card status not eligible for this modify action: commitCardPinChange.", "errorData": {"modifyReason": "commitCardPinChange"}}}
{"status": "error", "error": {"errorType": "NOT_FOUND", "errorCode": "ACH_ACCOUNT_NOT_FOUND", "message": "Active ach account not found."}}
ACCOUNT_STATUS_NOT_ELIGIBLE
400
Account status does not allow ACH transactions
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACCOUNT_STATUS_NOT_ELIGIBLE", "message": "Account status for accountId: acc123 not eligible for this action: achTransaction."}}
ACH_ACCOUNT_STATUS_NOT_ELIGIBLE
400
ACH account status does not allow transactions
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACH_ACCOUNT_STATUS_NOT_ELIGIBLE", "message": "Ach account status not eligible for this action: transaction."}}
ACH_ACCOUNT_NOT_OWNED_BY_ACCOUNT
400
ACH account does not belong to the specified account
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACH_ACCOUNT_NOT_OWNED_BY_ACCOUNT", "message": "Ach account is not owned by the account."}}
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACCOUNT_STATUS_NOT_ELIGIBLE", "message": "Account status for accountId: acc123 not eligible for this action: cancelAch."}}
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACCOUNT_STATUS_NOT_ELIGIBLE", "message": "Account status for accountId: acc123 not eligible for this action: createFee."}}
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACCOUNT_STATUS_NOT_ELIGIBLE", "message": "Account status for accountId: acc123 not eligible for this action: reverseFee."}}
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACCOUNT_STATUS_NOT_ELIGIBLE", "message": "Account status for accountId: acc123 not eligible for this action: createAdjustment."}}
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACCOUNT_STATUS_NOT_ELIGIBLE", "message": "Account status for accountId: acc123 not eligible for this action: createPayment."}}
Create A2A Transfer (POST /transaction/create-a2a-transfer)
Error Code
HTTP Status
Description
Example Payload
PRODUCT_A2A_INVALID
400
A2A transfers are not enabled for this product
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "PRODUCT_A2A_NOT_ELIGIBLE", "message": "Product is not eligible for A2A transfers."}}
A2A_SENDER_RECEIVER_SAME_ACCOUNT
400
Cannot transfer to the same account
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "A2A_SENDER_RECEIVER_SAME", "message": "Sender and receiver cannot be the same."}}
ACCOUNT_NOT_FOUND
404
The specified account was not found (sender or receiver)
{"status": "error", "error": {"errorType": "INVALID_INPUT", "errorCode": "ACCOUNT_STATUS_NOT_ELIGIBLE", "message": "Account status for accountId: acc123 not eligible for this action: a2aTransfer."}}
Common Errors
These errors can occur across multiple endpoints:
Resource Not Found Errors
Error Code
Description
USER_NOT_FOUND
The specified user was not found
ACCOUNT_NOT_FOUND
The specified account was not found
CARD_NOT_FOUND
The specified card was not found
ACH_ACCOUNT_NOT_FOUND
The specified ACH account was not found
PRODUCT_NOT_FOUND
The specified product was not found
LINKED_INSTITUTION_NOT_FOUND
The specified linked institution was not found
LINKED_INSTITUTION_ACCOUNT_NOT_FOUND
The specified linked institution account was not found
Lookup Errors
Error Code
Description
USER_LOOKUP_ERROR
Error occurred while looking up user data
ACCOUNT_LOOKUP_ERROR
Error occurred while looking up account data
ACH_ACCOUNT_LOOKUP_ERROR
Error occurred while looking up ACH account data
PRODUCT_LOOKUP_ERROR
Error occurred while looking up product data
LINKED_INSTITUTION_LOOKUP_ERROR
Error occurred while looking up linked institution data
ZTM (Zero Touch Monitoring) Errors
Error Code
Description
WORKFLOW_TYPE_NOT_FOUND
No workflow type found for this action
WORKFLOW_NOT_FOUND
Workflow configuration not found
WORKFLOW_NOT_ACTIVE
Workflow is not active
ZTM_WORKFLOW_PROVIDER_ERROR
Error from ZTM workflow provider
ZTM_NO_GO
Transaction was blocked by ZTM risk assessment
Validation Errors
Error Code
Description
INVALID_USER_IDNUMBER
The provided ID number format is invalid
INVALID_SHIPPING_OPTION
The specified shipping option is invalid
PRODUCT_INVALID_CONFIG_ID
The display config ID is invalid
INVALID_TRANSACTION
Transaction data is invalid
HTTP Status Codes
Status Code
Meaning
Usage
400
Bad Request
Invalid input, validation failures, duplicate resources, business rule violations
404
Not Found
Requested resource does not exist
500
Internal Server Error
System errors, lookup failures, vendor errors
Note: Most duplicate/conflict scenarios return 400 rather than 409.
Error Handling Best Practices
Always check errorCode: Use the error code (not message) for programmatic handling
Log errorData: Additional context in errorData helps with debugging
Display user-friendly messages: Don't show raw error messages to end users
Retry logic: For 500-level errors, implement exponential backoff
Validation: Validate input client-side before API calls to reduce errors
Support
For questions about specific error codes or error handling, please contact Spidr support or refer to the main API documentation.