Errors and Troubleshooting

How errors surface

VICA reports failures in three different places depending on the operation. Read the table that matches where you saw the error - the same reason code can mean different things in different contexts (see the callout below).

Where the error appears Operations What to read
Synchronous HTTP response (immediate) Request-level validation and business-rule rejections on any call HTTP Status Codes, VIDC Reason Codes (synchronous)
Asynchronous outcome (Request Status / Notification) Enroll, Manage, Delete (returned 202, then completed) Click to Pay Reason Codes
Get Data item result (in the data[] array, HTTP 200) Get Data, per product Get Data Item-Level Error Codes

HTTP status codes

Status Meaning When
200 OK Request processed synchronously Get Data, Request Status. Note: a 200 does not mean every product succeeded - inspect each item.
202 Accepted Request accepted for asynchronous processing Enroll, Manage, Delete. Outcome arrives via Request Status or Notification.
400 Bad Request Validation or business-rule failure Missing/invalid fields (VIDC-1xxx), business-rule rejections (VIDC-2xxx)
409 Conflict Concurrency conflict A prior request for the same consumer is still in flight (VIDC-3000)
422 Unprocessable Entity Operation not supported for the target product AVS consumer-level operations (Manage Consumer, Delete Consumer)
500 Internal Server Error Server-side failure VIDC-5000

VIDC reason codes (synchronous)

Returned on the immediate HTTP response of a call (typically 400, 409, or 500).

HTTP Reason code Meaning
400 VIDC-1000 Required field missing
400 VIDC-1001 Invalid value / Request ID not found
400 VIDC-1002 Length checks failed
400 VIDC-1003 Array length failed
400 VIDC-2000 Consumer is already enrolled - Enroll Data
400 VIDC-2001 Consumer is not enrolled - Enroll Payment Instruments, Manage Consumer Information, Manage Payment Instruments Data, Get Data, Delete Consumer Information, and Delete Payment Instruments Data)
400 VIDC-2002 Entitlement checks failed - Enroll Data, Enroll Payment Instruments
409 VIDC-3000

Concurrent checks failed - Enroll Payment Instruments, Manage Consumer Information, Manage Payment Instruments Data, Get Data, Delete Consumer Information, and Delete Payment Instruments Data

For example, when an Issuer sends Enroll Data request for consumer_1 and then sends Enroll Payment Instruments for the same consumer_1. If the Enroll Data request is not yet completed, then the Enroll Payment Instruments request will get a concurrency error response.

409 VIDC-3001 Duplicate request detected. This error will occur when there is an in-progress Enroll Data or Enroll Payment Instrument request for the same consumer and payment instrument.
500 VIDC-5000 Internal service error

VIDC-3000 example: an issuer sends Enroll Data for consumer_1, then sends Enroll Payment Instruments for the same consumer_1 before the first request completes. The second request receives a concurrency error.

VIDC Error Codes for ADS

Code Returned when
VIDC-1000 A required field is missing from the request (e.g., externalConsumerID, countryCode).
VIDC-1001 A field value is invalid (wrong format, unsupported enum value, value out of allowed range), or the referenced resource (consumer or payment instrument) does not exist in ADS.
VIDC-1002 A string field exceeds its maximum allowed length (e.g., externalConsumerID > 100 chars, lastName > 35 chars).
VIDC-1003 An array field contains more entries than the allowed maximum (e.g., more than 5 phones or emails).
VIDC-2000 An Enroll Consumer request is submitted for a consumer who is already enrolled in ADS.
VIDC-2001 A Manage Consumer, Delete Consumer, or payment instrument operation references a consumer who is not enrolled in ADS.
VIDC-2003 A payment instrument is submitted with an expirationDate that has already passed.
VIDC-2004 An Enroll Payment Instrument request is submitted for an instrument (matched by type + accountNumber) that is already enrolled in ADS for this consumer.
VIDC-2005 A Manage or Delete Payment Instrument request references an instrument that is not enrolled in ADS for this consumer.
VIDC-2008 An update request attempts to change a field that cannot be modified after enrollment — specifically, phones[0] (the alias identifier stored in Alias Directory).
VIDC-5000 An internal ADS service error occurred. Retry the request; if the error persists, investigate ADS service health.

Click to Pay reason codes (request status)

Returned in the asynchronous outcome for Click to Pay — in the details[] of the Request Status response or a Status Notification.

Reason code Meaning
VIDC-1000 Required field missingTBC
VIDC-1001 Invalid value / Request ID not found
VIDC-1002 Length checks failed
VIDC-1003 Array length failed
VIDC-2000 Consumer is already enrolled – Enroll Data
VIDC-2001 Consumer is not enrolled - Enroll Payment Instruments, Manage Consumer Information, Manage Payment Instruments Data, Get Data, Delete Consumer Information, and Delete Payment Instruments Data
VIDC-2002

Payment instrument is not issued by the Issuer that sends the request - Enroll Data, Enroll Payment Instruments, Manage Payment Instruments Data, and Delete Payment Instruments Data

For example: Issuer A sends a request with card_1, and card_1 is issued by Issuer B.

VIDC-2003 Payment instrument is expired
VIDC-2004 Payment instrument already exist
VIDC-2005 Payment instrument is not enrolled
VIDC-2006 Payment instrument is not a Visa card
VIDC-2007 Payment instrument's issuer is not configured for Issuer Offered Click to Pay
VIDC-2008

This information cannot be updated.

This currently applies to expirationDate.

VIDC-2009 The consumerInformation.externalConsumerID already exist. Please use Manage Consumer to update email/mobile
VIDC-2010

The provided externalConsumerId has reached the maximum number of cards allowed.

Note: The number of payment instruments that may be associated with an externalConsumerId is 10.

VIDC-7000 Payment instrument's tokenization declined / PAN is not eligible for tokenization
VIDC-5000 Internal Service Error

Get data item-level error codes

Returned per product inside the data[] array of a Get Data response. The overall HTTP status is always 200; a failed product reports an errorDetails object (product-keyed items) or an error string (intent-keyed CTP items).

Reason Code Meaning Products that may return it
VIDC-1005 The requested operation is not supported for the specified product in VICA. ANI, AVS
VIDC-2001 Consumer is not enrolled in the requested product. CTP, ADS
VIDC-3001 Duplicate request detected. This error will occur when there is an in-progress Enroll Data or Enroll Payment Instrument request for the same consumer and payment instrument. CTP, AVS
VIDC-4000 Request timed out while retrieving data for this product CTP, ADS
VIDC-4001 Downstream service is temporarily unavailable. Please retry at a a later time. CTP, ADS

Error handling for multi-product requests

When a request targets multiple products, each product is processed independently. A failure in one product does not fail the others or reject the request at the HTTP level.

  • Writes (Enroll / Manage / Delete) return 202. The per-product outcome is reported in the details[] array of the Request Status response or Notification, each item with status SUCCESS or FAILED.
  • Get Data always returns 200. Each product's outcome is a separate item in the data[] array - either data, or an errorDetails object.

Per-item error structure. Product-keyed failures use a structured errorDetails object; intent-keyed CTP failures use a top-level error string (legacy format).

"errorDetails": { "reason": "VIDC-1002", "message": "Request timed out while retrieving data for this product", "details": [ { "location": "consumerInformation.externalConsumerID", "reason": "Lookup exceeded the processing window" } ] }
"errorDetails": {
  "reason": "VIDC-1002",
  "message": "Request timed out while retrieving data for this product",
  "details": [
    {
      "location": "consumerInformation.externalConsumerID",
      "reason": "Lookup exceeded the processing window"
    }
  ]
}
		

The errorDetails object contains:

Field Description
reason A VIDC- reason code
message Human-readable description of the failure
details Array of objects, each with a location (field or path where the error occurred) and a reason (explanation at that location)

Terminal vs. in-progress states. Notifications are sent only after all processing is complete, so every details[] item is terminal (SUCCESS/FAILED). The Request Status API, by contrast, may return IN_PROGRESS for a product-keyed item that is still processing. Inspect the details[] array to determine which products completed and which need follow-up.

Troubleshooting and recovery

Symptom Likely cause Recommended action
409 / VIDC-3000 A prior request for the same consumer is still processing Wait for the first request to reach a terminal state (poll Request Status), then retry
Get Data item VIDC-1002 (timeout) Transient retrieval timeout for one product Retry that product separately; other products' results are valid
Get Data item VIDC-1001 Consumer not enrolled in that product Expected when the consumer was never enrolled in that product - not a transient error
Get Data item VIDC-1003 Product does not support Get Data (AVS/ANI) Do not retry - Get Data is unsupported for that product by design
VIDC-2002 on a payment instrument The card is not issued by the requesting issuer Verify the PAN belongs to your BID before submitting
VIDC-2010 Consumer already has the maximum 10 cards Delete an existing card before enrolling a new one
Request Status returns nothing requestTraceId expired The requestTraceId is valid for 7 days; capture outcomes within that window or rely on the Status Notification
VIDC-7000 PAN not eligible for tokenization The card cannot be enrolled into Click to Pay; surface to the cardholder accordingly

Contact

  • For onboarding, product eligibility, or credentialing questions, contact your Visa Representative or Visa Integration Specialist.
  • For developer and API questions, contact [email protected].
  • See Working with Visa APIs, Developer Tools, and the community forum on Visa Developer.

Related