Implementation Guides

These guides are organized by operation, not by product. Because VICA uses one fixed set of endpoints across all products (see Core Concepts), the request you send to enroll a consumer is the same call whether you target Click to Pay, AVS, ADS, or ANI — only the products array and a few product-specific fields change. Each guide below shows the shared call once, then gives a per-product sample under a tab.

Before you start: complete First Steps (credentials, Two-Way SSL, X-Pay-Token, MLE, first call) and read Core Concepts (data model, identity, the async processing model, request patterns). For the complete field constraints and full endpoint list, see API Reference.

How enrollment works via VICA

  • Enrollment creates a consumer record and links one or more payment instruments to it, scoped to the product(s) you specify.
  • A consumer is identified by externalConsumerID + externalConsumerIDOwnerBID (see How does VICA identify a consumer?). Data is siloed per product - enrolling in one product does not enroll in another.
  • Enrollment is asynchronous: the API returns HTTP 202 with a requestTraceId. The final outcome arrives via Request Status or a Status Notification.
  • A single request can target up to four products; each is processed and reports its outcome independently.

Data validation

Issuers must only enroll or update consumer and payment-instrument data for their own customers, and only data they know to be accurate. It is the issuer's responsibility to:

  • Perform relevant KYC checks on the customer and address data.
  • Validate that the consumer has access to all email addresses and phone numbers supplied over the API.
  • Ensure the accuracy of all data provided to Visa, including the validity of the payment instrument(s), that the instrument(s) belong to the enrolled consumer, and that the correct email/phone is matched with the instrument(s).

How to enroll issuer data

Create a new consumer and one or more payment instruments, and enroll them into one or more products.

Endpoint

POST /enrollData
		

Returns HTTP 202 Accepted. Use the requestTraceId to retrieve the final outcome.

Supported products

Product Supported Product-specific requirements
Click to Pay (CLICK_TO_PAY) YES consumerInformation required; ≥1 CARD with billingAddress
Address Verification Service (ADDRESS_VERIFICATION_SERVICE) YES CARD with billingAddress required; consumerInformation optional
Alias Directory Service (ALIAS_DIRECTORY_SERVICE) YES consumerInformation required; CARD or BANK_ACCOUNT; optional preferredFor
Account Name Inquiry (ACCOUNT_NAME_INQUIRY) YES consumerInformation and CARD both required; BANK_ACCOUNT not accepted

To enroll into more than one product in a single call, include multiple entries in the products array — see How to Enroll & Manage Multiple Products.

Sequence

Figure: Enroll Data is asynchronous — VICA returns 202 Accepted with a requestTraceId, then you confirm the per-product outcome by polling Request Status (pull) or receiving a Status Notification (push)

diagram

Sample request

Request - Click to Pay

{
  "products": [
    { "productCode": "CLICK_TO_PAY" }
  ],
  "consumerInformation": {
    "externalConsumerID": "consumer-abc-001",
    "externalConsumerIDOwnerBID": "10098765",
    "firstName": "Alex",
    "lastName": "Miller",
    "countryCode": "USA",
    "locale": "en_US",
    "emails": ["[email protected]"],
    "phones": ["14155550101"]
  },
  "paymentInstruments": [
    {
      "type": "CARD",
      "accountNumber": "4111111145551140",
      "nameOnCard": "Alex Miller",
      "expirationDate": "2030-01",
      "billingAddress": {
        "addressLine1": "1000 Market Street",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94105",
        "country": "USA"
      }
    }
  ]
}
		

Request — Address Verification Service

consumerInformation is optional; the most common AVS-only pattern enrolls the card alone. billingAddress is required.

{
  "products": [
    { "productCode": "ADDRESS_VERIFICATION_SERVICE" }
  ],
  "paymentInstruments": [
    {
      "type": "CARD",
      "accountNumber": "4111111145551140",
      "nameOnCard": "Alex Miller",
      "expirationDate": "2030-01",
      "billingAddress": {
        "addressLine1": "1000 Market Street",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94105",
        "country": "USA"
      }
    }
  ]
}
		

Request — Alias Directory Service

ADS is the only product that accepts BANK_ACCOUNT instruments and the preferredFor field. This example enrolls a bank account.

{
  "products": [
    { "productCode": "ALIAS_DIRECTORY_SERVICE" }
  ],
  "consumerInformation": {
    "externalConsumerID": "63421837-d597-4f0f-89e4-930c1a7b9e85",
    "externalConsumerIDOwnerBID": "10098765",
    "firstName": "Alex",
    "lastName": "Miller",
    "countryCode": "USA",
    "locale": "en_US",
    "emails": ["[email protected]"],
    "phones": ["16504005555"]
  },
  "paymentInstruments": [
    {
      "type": "BANK_ACCOUNT",
      "accountName": "Alex Miller",
      "accountNumber": "1001001234",
      "accountNumberType": "DEFAULT",
      "accountType": "CHECKING",
      "countryCode": "USA",
      "currencyCode": "USD",
      "bankName": "Bank A",
      "preferredFor": [
        { "type": "RECEIVE" }
      ]
    }
  ]
}
		

Request — Account Name Inquiry

ANI requires both consumerInformation and a CARD. BANK_ACCOUNT is not accepted.

{
  "products": [
    { "productCode": "ACCOUNT_NAME_INQUIRY" }
  ],
  "consumerInformation": {
    "externalConsumerID": "63421837-d597-4f0f-89e4-930c1a7b9e85",
    "externalConsumerIDOwnerBID": "10098765",
    "firstName": "Alex",
    "lastName": "Miller",
    "countryCode": "USA"
  },
  "paymentInstruments": [
    {
      "type": "CARD",
      "accountNumber": "4111111145551140",
      "nameOnCard": "Alex Miller",
      "expirationDate": "2030-01",
      "billingAddress": {
        "addressLine1": "1000 Market Street",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94105",
        "country": "USA"
      }
    }
  ]
}
		

Sample response

Enroll Data acknowledges receipt synchronously, then reports the per-product outcome asynchronously.

Response — 202 Accepted (acknowledgement)

{
  "requestTraceId": "351562ba-83cf-11ee-b962-0242ac120002"
}
		

Final outcome — via Request Status or Notification

Retrieve the result with Request Status, or receive it as a Status Notification.

Each product appears as its own item in details[].

Success:

{
  "requestTraceId": "351562ba-83cf-11ee-b962-0242ac120002",
  "status": "COMPLETED",
  "consumerInformation": {
    "externalConsumerID": "63421837-d597-4f0f-89e4-930c1a7b9e85",
    "externalConsumerIDOwnerBID": "10098765"
  },
  "details": [
    {
      "productCode": "CLICK_TO_PAY",
      "status": "SUCCESS"
    }
  ]
}
		

Per-product failure (validation):

{
  "status": "COMPLETED",
  "consumerInformation": {
    "externalConsumerID": "63421837-d597-4f0f-89e4-930c1a7b9e85",
    "externalConsumerIDOwnerBID": "10098765"
  },
  "details": [
    {
      "productCode": "CLICK_TO_PAY",
      "status": "FAILED",
      "errorDetails": [
        {
          "field": "consumerInformation.locale",
          "reason": "VIDC-1000",
          "message": "The consumerInformation.locale is missing"
        }
      ]
    }
  ]
}
		

For the meaning of VIDC- codes and how failures surface per operation, see Errors and Troubleshooting.

How to enroll payment instruments

Add one or more payment instruments to a consumer who is already enrolled. The consumer is identified by externalConsumerID — you don't resend the full consumer profile.

Endpoint

POST /enrollPaymentInstruments
		

Returns HTTP 202 Accepted.

Supported products

Product Supported Product-specific requirements
Click to Pay (CLICK_TO_PAY) YES CARD + billingAddress; full consumerInformation not required
Address Verification Service (ADDRESS_VERIFICATION_SERVICE) YES CARD + billingAddress; full consumerInformation not required
Alias Directory Service (ALIAS_DIRECTORY_SERVICE) YES CARD or BANK_ACCOUNT
Account Name Inquiry (ACCOUNT_NAME_INQUIRY) YES CARD; if consumerInformation is present ANI re-enrolls the consumer, if absent it returns an error

Sequence

Figure: adding a payment instrument is asynchronous — VICA returns 202 Accepted with a requestTraceId; confirm the per-product outcome via Request Status (pull) or a Status Notification (push), exactly as for Enroll Data.

Sample request

Request — Click to Pay / AVS (add a card)

The shape is identical for both; change only the productCode.

{
  "products": [ { "productCode": "CLICK_TO_PAY" } ],
  "consumerInformation": { "externalConsumerID": "consumer-abc-001" },
  "paymentInstruments": [
    {
      "type": "CARD",
      "accountNumber": "4111111145551142",
      "nameOnCard": "Alex Miller",
      "expirationDate": "2031-06",
      "billingAddress": {
        "addressLine1": "1000 Market Street",
        "city": "San Francisco", "state": "CA",
        "postalCode": "94105", "country": "USA"
      }
    }
  ]
}
		

Request — Alias Directory Service (add a bank account)

{
  "products": [ { "productCode": "ALIAS_DIRECTORY_SERVICE" } ],
  "consumerInformation": { "externalConsumerID": "63421837-d597-4f0f-89e4-930c1a7b9e85" },
  "paymentInstruments": [
    {
      "type": "BANK_ACCOUNT",
      "accountName": "Alex Miller",
      "accountNumber": "1001001234",
      "accountNumberType": "DEFAULT",
      "countryCode": "USA",
      "currencyCode": "USD",
      "bankName": "Bank A",
      "preferredFor": [ { "type": "RECEIVE" } ]
    }
  ]
}
		

Request — Account Name Inquiry

ANI requires consumerInformation on this call; if present, ANI re-enrolls the consumer as part of the operation.

{
  "products": [ { "productCode": "ACCOUNT_NAME_INQUIRY" } ],
  "consumerInformation": {
    "externalConsumerID": "63421837-d597-4f0f-89e4-930c1a7b9e85",
    "firstName": "Alex", "lastName": "Miller", "countryCode": "USA"
  },
  "paymentInstruments": [
    { "type": "CARD", "accountNumber": "4111111145551140", "nameOnCard": "Alex Miller",
    "expirationDate": "2030-01",
    "billingAddress": { "addressLine1": "1000 Market Street", "city": "San Francisco",
    "state": "CA", "postalCode": "94105", "country": "USA" } }
  ]
}
		

Sample response

Returns 202 with a requestTraceId (same shape as Enroll Data); the per-product outcome is reported via Request Status or a Status Notification.

Note: Representative samples. For the complete schema and all field constraints, see API Reference.

How consumer and PI management works with VICA

After enrollment, you can manage existing records without re-enrollment. Certain attributes, such as phone number in ADS, cannot be modified after creation, and require record deletion and recreation.

  • Management updates or removes data that was previously enrolled; it never creates a consumer. Use enrollment to add new consumers or instruments.
  • Like enrollment, management writes are asynchronous - they return 202 and the outcome arrives via Request Status or a Status Notification. Get Data is the exception: it is synchronous (200).
  • Deleting a consumer also removes all their payment instruments for that product; deleting a payment instrument leaves the consumer and other instruments intact.
  • Support varies by product. AVS and ANI do not support consumer-level management; ANI does not support payment-instrument updates. Check each operation's Supported products table, or the capability matrix.

How to manage consumer information data

Update a consumer's profile fields (such as email or mobile number) after enrollment. No payment instrument is included.

Endpoint

PUT /manageConsumerInformation
		

Returns HTTP 202 Accepted.

Supported products

Product Supported Product-specific requirements
Click to Pay (CLICK_TO_PAY) YES Profile fields can be updated after enrollment
Address Verification Service (ADDRESS_VERIFICATION_SERVICE) NO Not supported
Alias Directory Service (ALIAS_DIRECTORY_SERVICE) PARTIAL Not supported for Email Address or Mobile Number updates
Account Name Inquiry (ACCOUNT_NAME_INQUIRY) NO Not supported

Sequence

Figure: a consumer-profile update is asynchronous — VICA returns 202 Accepted; confirm the outcome via Request Status (pull) or a Status Notification (push).

Sample request

Include only the fields to change, alongside the consumer identifier.

{
  "products": [ { "productCode": "CLICK_TO_PAY" } ],
  "consumerInformation": {
    "externalConsumerID": "consumer-abc-001",
    "emailAddress": "[email protected]"
  }
}
		

Note: Manage Consumer is an overwrite. For Click to Pay, the record is replaced with the data in the request; see Click to Pay with VICA › Behavior when a consumer is disabled for how status interacts with updates.

Sample response

Returns 202; outcome via Request Status or Status Notification. For the complete schema, see API Reference.

How to manage payment instruments

Update payment instrument details — billing address, card details, or (ADS only) preferredFor.

Endpoint

PUT /managePaymentInstruments
		

Returns HTTP 202 Accepted.

Supported products

Product Supported Product-specific requirements
Click to Pay (CLICK_TO_PAY) YES expirationDate cannot be updated (VIDC-2008)
Address Verification Service (ADDRESS_VERIFICATION_SERVICE) YES billingAddress is required on every update
Alias Directory Service (ALIAS_DIRECTORY_SERVICE) YES Supports preferredFor updates on CARD and BANK_ACCOUNT
Account Name Inquiry (ACCOUNT_NAME_INQUIRY) NO Not supported

Sequence

Figure: a payment-instrument update is asynchronous — VICA returns 202 Accepted; confirm the outcome via Request Status (pull) or a Status Notification (push).

Sample request

Request - Click to Pay / AVS (update billing address)

{
  "products": [ { "productCode": "CLICK_TO_PAY" } ],
  "paymentInstruments": [
    {
      "billingAddress": {
        "addressLine1": "500 New Address Blvd",
        "city": "Austin", "state": "TX",
        "postalCode": "78701", "country": "USA"
      }
    }
  ]
}
		

Request - Alias Directory Service (update preferred use)

{
  "products": [ { "productCode": "ALIAS_DIRECTORY_SERVICE" } ],
  "paymentInstruments": [
    {
       "preferredFor": [ { "type": "SEND" }, { "type": "RECEIVE" } ]
    }
  ]
}
		

Sample response

Returns 202; outcome via Request Status. For the complete schema, see API Reference.

How to retrieve data (get data)

Retrieve a consumer's current enrollment and all associated payment instruments. Synchronous - returns HTTP 200.

Endpoint

POST /getData
		

Supported products

Product Supported Product-specific requirements
Click to Pay (CLICK_TO_PAY) YES Returns CARD instruments with tokenDetails where available
Address Verification Service (ADDRESS_VERIFICATION_SERVICE) YES Returns CARD/BANK_ACCOUNT with preferredFor and preferredTimestamp where set
Alias Directory Service (ALIAS_DIRECTORY_SERVICE) NO Item-level VIDC-1003
Account Name Inquiry (ACCOUNT_NAME_INQUIRY) NO Item-level VIDC-1003

Sequence

Figure: Get Data is synchronous — VICA returns the enrolled data (or a per-product errorDetails item) in a single 200 OK; there is no Request Status step.

Sample request

{
  "products": [ { "productCode": "CLICK_TO_PAY" } ],
  "consumerInformation": { "externalConsumerID": "consumer-abc-001" }
}
		

Sample response

Returns HTTP 200. Each requested product is a separate item in data[]; each succeeds or fails independently.

{
  "data": [
    {
      "productCode": "CLICK_TO_PAY",
      "consumerInformation": {
        "externalConsumerID": "consumer-abc-001",
        "externalConsumerIDOwnerBID": "10098765",
        "firstName": "Alex", "lastName": "Miller", "countryCode": "USA"
      },
      "paymentInstruments": [
        {
          "type": "CARD",
          "lastFour": "1140",
          "expirationDate": "2030-01",
          "billingAddress": {
            "addressLine1": "1000 Market Street", "city": "San Francisco",
            "state": "CA", "postalCode": "94105", "country": "USA"
          }
        }
      ]
    }
  ]
}
		

For failed items (timeout, not enrolled, unsupported product) the item carries an errorDetails object instead of data — see Errors & Troubleshooting › Get Data Item-Level Error Codes and Get Data for Multiple Products.

How to delete consumer information

Remove a consumer and all their associated payment instruments for a product.

Endpoint

POST /deleteConsumerInformation
		

Supported products

Product Supported Product-specific requirements
Click to Pay (CLICK_TO_PAY) YES Also removes all the consumer's CTP payment instruments
Address Verification Service (ADDRESS_VERIFICATION_SERVICE) YES Also removes associated instruments
Alias Directory Service (ALIAS_DIRECTORY_SERVICE) NO Returns HTTP 422
Account Name Inquiry (ACCOUNT_NAME_INQUIRY) NO Not supported

Sequence

Figure: deleting a consumer is asynchronous — VICA returns 202 Accepted; confirm the outcome via Request Status (pull) or a Status Notification (push).

Sample request

{
  "products": [ { "productCode": "CLICK_TO_PAY" } ],
  "consumerInformation": { "externalConsumerID": "consumer-abc-001" }
}
		

Sample response

Returns 202; outcome via Request Status. For the complete schema, see API Reference.

How to delete payment instruments

Remove a single payment instrument. The consumer record and other instruments are unaffected. Supported by all products.

Endpoint

POST /deletePaymentInstruments
		

Returns HTTP 202 Accepted.

Sequence

Figure: deleting a payment instrument is asynchronous — VICA returns 202 Accepted; confirm the outcome via Request Status (pull) or a Status Notification (push).

Sample request

Request — Account Name Inquiry (by account number)

{
  "products": [ { "productCode": "ACCOUNT_NAME_INQUIRY" } ],
  "consumerInformation": { "externalConsumerID": "63421837-d597-4f0f-89e4-930c1a7b9e85" },
  "paymentInstruments": [
    { "type": "CARD", "accountNumber": "4111111145551140" }
  ]
}
		

Sample response

Returns 202; outcome via Request Status. For the complete schema, see API Reference.

How to enroll a known consumer into an additional product

When a consumer is already enrolled in one product (for example, Click to Pay), add them to another product without resubmitting full consumer information. The consumer is identified by path parameter; the body carries the target product(s) and a payment instrument.

Endpoint

PUT /enrollData/{externalConsumerId}
		

Returns HTTP 202 Accepted.

When to use

  • The consumer is already enrolled in Click to Pay or SRC, and you want to add them to ADS.
  • The externalConsumerID is known and was enrolled via VICA.

Sequence

Figure: enrolling a known consumer into another product is asynchronous - VICA returns 202 Accepted; confirm the outcome via Request Status (pull) or a Status Notification (push).

Sample request

{
  "products": [ { "productCode": "ALIAS_DIRECTORY_SERVICE" } ],
  "paymentInstruments": [
    {
      "type": "CARD",
      "accountNumber": "4111111145551140",
      "nameOnCard": "Alex Miller",
      "expirationDate": "2030-01",
      "billingAddress": {
        "addressLine1": "1000 Market Street", "city": "San Francisco",
        "state": "CA", "postalCode": "94105", "country": "USA"
      }
    }
  ]
}
		

The products array can include more than one product to add the consumer to several at once.

Sample response

Returns 202; outcome via Request Status. For the complete schema, see API Reference.

How to enroll a known consumer and payment instrument into an additional product

When both the consumer and a specific payment instrument are already known by their reference identifiers, add that pair to additional product(s) without resubmitting payment-instrument details.

Endpoint

PUT /enrollData/{externalConsumerId}/paymentInstruments/{paymentInstrumentReferenceId}
		

Returns HTTP 202 Accepted.

Path parameters

Parameter Description
externalConsumerId The issuer-provided consumer identifier (UUID format)
paymentInstrumentReferenceId The Visa-assigned reference ID for the instrument (max 32 characters), from Get Data

Sequence

Figure: enrolling a known consumer + instrument into another product is asynchronous — VICA returns 202 Accepted; confirm the outcome via Request Status (pull) or a Status Notification (push).

Sample request

The body contains only the products array; both the consumer and instrument are identified by path parameters.

{
  "products": [ { "productCode": "ALIAS_DIRECTORY_SERVICE" } ]
}
		

Sample response

Returns 202; outcome via Request Status. For the complete schema, see API Reference.

How to check request status by request trace ID

Retrieve the outcome of an asynchronous request. Synchronous - returns HTTP 200. The requestTraceId is valid for 7 days from receipt.

Endpoint

GET /requestStatus/{requestTraceId}
		

Sequence

Figure: Request Status is synchronous — a single 200 OK returns the overall status and a per-product details[] array (items may be SUCCESS, FAILED, or IN_PROGRESS). The requestTraceId is valid for 7 days.

Sample response

The top-level status reflects overall processing; the details[] array carries one item per product. A product-keyed item reports failures in a structured errorDetails object.

{
  "status": "COMPLETED",
  "consumerInformation": {
    "externalConsumerID": "63421837-d597-4f0f-89e4-930c1a7b9e85",
    "externalConsumerIDOwnerBID": "10098765"
  },
  "details": [
    {
      "productCode": "CLICK_TO_PAY",
      "status": "FAILED",
      "errorDetails": [
        {
          "field": "consumerInformation.locale",
          "reason": "VIDC-1000",
          "message": "The consumerInformation.locale is missing"
        }
      ]
    }
  ]
}
		

A product-keyed item may report IN_PROGRESS if still processing. For reason-code meanings, see Errors and Troubleshooting. How items are keyed (intent vs productCode) depends on the Request pattern.

How to receive status notifications

Instead of polling Request Status, you can have Visa push the outcome to an endpoint you host. Visa calls your registered endpoint when an asynchronous request completes.

Endpoint

POST /{your registered endpoint}
		

Register the endpoint in Visa Developer Platform (VDP). You must secure and operate the receiver — see Authentication & Security › Securing Outbound Notification Endpoints. Notifications are sent only after processing completes, so every details[] item is terminal (SUCCESS/FAILED).

Sequence

Figure: with notifications the direction is reversed — Visa is the caller, pushing the completed outcome to the endpoint you host. Acknowledge receipt promptly and process asynchronously. The success-response contract is pending confirmation — see Securing Outbound Notification Endpoints.

Sample payload (Visa → your endpoint)

{
  "requestTraceId": "351562ba-83cf-11ee-b962-0242ac120002",
  "status": "COMPLETED",
  "consumerInformation": {
    "externalConsumerID": "63421837-d597-4f0f-89e4-930c1a7b9e85",
    "externalConsumerIDOwnerBID": "10098765"
  },
  "details": [
    {
      "productCode": "CLICK_TO_PAY",
      "status": "SUCCESS"
    }
  ]
}
		

Acknowledge receipt promptly and process asynchronously; de-duplicate on requestTraceId. For the authoritative payload schema, see API Reference.

How to receive enrollment attempt notifications

When a consumer initiates a Click to Pay self-enrollment and you are enabled for Issuer Offered Click to Pay (IoC), Visa calls your registered endpoint so you can be notified of the consumer's intent to enroll into Click to Pay. The endpoint is configured in VDP and mapped to account ranges in Visa Digital Configuration Service (VDCS) by Visa Client Configuration Management (CCM).

Endpoint

POST /{your registered endpoint}
		

Secure and operate this receiver endpoint yourself — see Authentication and Security.

Sample payload (Visa → your endpoint)

{
  "accountNumber": "4111111145551140",
  "firstName": "Alex",
  "lastName": "Miller",
  "email": "[email protected]",
  "phone": "16504005555"
}
		

How to enroll and manage multiple products at the same time

Target several products in one request; each is processed independently, and a failure in one does not affect the others. Up to four products can be included.

Choosing a request pattern

See Core Concepts › Request Patterns for the intent / products / intent + products decision and the response-keying rules. New integrations should use products.

Sequence

Figure: a multi-product request returns one 202; each product is processed independently and reports its own outcome as a separate item in details[].

Sample request - enroll into Click to Pay and AVS

A single Enroll Data call enrolls the consumer and card into both products. Each product reports its own outcome.

{
  "products": [
    { "productCode": "CLICK_TO_PAY" },
    { "productCode": "ADDRESS_VERIFICATION_SERVICE" }
  ],
  "consumerInformation": {
    "externalConsumerID": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "externalConsumerIDOwnerBID": "10098765",
    "firstName": "Sarah", "lastName": "Johnson", "countryCode": "USA",
    "locale": "en_US",
    "emails": ["[email protected]"], "phones": ["13105551234"]
  },
  "paymentInstruments": [
    {
      "type": "CARD", "accountNumber": "4111111145551142", "nameOnCard": "Sarah Johnson",
      "expirationDate": "2031-06",
      "billingAddress": { "addressLine1": "750 Oak Avenue", "city": "Los Angeles",
        "state": "CA", "postalCode": "90001", "country": "USA" }
    }
  ]
}
		

Returns 202. Inspect the details[] array in Request Status / Notification for the per-product outcome.

Get data for multiple products

Get Data can retrieve several products in one call. It always returns HTTP 200; each product is a separate data[] item that succeeds or fails independently. Get Data is supported for CTP and ADS; AVS and ANI return item-level VIDC-1003.

Sample response — one product succeeds, one unsupported

{
  "data": [
    {
      "productCode": "CLICK_TO_PAY",
      "consumerInformation": { "externalConsumerID": "consumer-abc-001" },
      "paymentInstruments": [ { "type": "CARD", "lastFour": "1140" } ]
    },
    {
      "productCode": "ADDRESS_VERIFICATION_SERVICE",
      "errorDetails": {
        "reason": "VIDC-1003",
        "message": "GET_DATA operation is not supported for this product"
      }
    }
  ]
}
		

The full set of multi-product scenarios (both succeed, partial failure/timeout VIDC-1002, consumer-not-found VIDC-1001, all fail, and intent-keyed variants) is enumerated in Errors & Troubleshooting › Error Handling for Multi-Product Requests. For the authoritative schema, see API Reference.