# Visa Click to Pay

## Issuers

- [Overview](https://developer.visa.com/capabilities/visa-secure-remote-commerce/docs-getting-started)
- [Issuers](https://developer.visa.com/capabilities/visa-secure-remote-commerce/issuers)
- [Use Cases](https://developer.visa.com/capabilities/visa-secure-remote-commerce/issuer-use-cases)
- [How to Enroll and Manage Customer Data](https://developer.visa.com/capabilities/visa-secure-remote-commerce/issuer-integration)
  - [Introduction](https://developer.visa.com/capabilities/visa-secure-remote-commerce/issuer-integration#section0)
  - [How It Works](https://developer.visa.com/capabilities/visa-secure-remote-commerce/issuer-integration#section1)
  - [API Overview](https://developer.visa.com/capabilities/visa-secure-remote-commerce/issuer-integration#section2)
  - [Available Endpoints](https://developer.visa.com/capabilities/visa-secure-remote-commerce/issuer-integration#section3)
  - [Errors](https://developer.visa.com/capabilities/visa-secure-remote-commerce/issuer-integration#section4)
  - [Frequently Asked Questions](https://developer.visa.com/capabilities/visa-secure-remote-commerce/issuer-integration#section5)
- [How to receive customer Enrollment Attempt Notifications for existing VCEH integrations](https://developer.visa.com/capabilities/visa-secure-remote-commerce/docs-how-to-enroll-notifications)
- [Troubleshooting](https://developer.visa.com/capabilities/visa-secure-remote-commerce/troubleshooting)

## How to Enroll and Manage Customer Data

### Introduction

To simplify the integration efforts for Issuers (or their VisaNet Processor, Visa Scheme Processor (Europe Region) or Third-Party Agent performing enrollment/lifecycle management on their behalf), a common set of Visa APIs has been developed to allow Issuers to enroll payment instruments to Click to Pay and in the future other Visa products. Issuers can now enroll and manage customer and payment instrument(s) information for Click to Pay using this API set.

### How It Works

#### Enrollment

- Client submits enrollment data and indicates the product to enroll it to
- Visa enrolls the data to the relevant product
- Client retrieves the status of the request or receives a status notification
- Clients receives notification if consumer attempts to enroll into Click to Pay

#### Management of Consumer Information

- Clients send a request to update / delete / retrieve data and indicates whether it applies to specific product or both
- Visa updates / retrieves / deletes the data on the relevant product
- Client retrieves the status of the request or receives a status notification

### API Overview

The APIs allow clients to modify the following categories of data.

| Category | Description | Examples |
| --- | --- | --- |
| intent | - This specifies the service which the data needs to be enrolled in. | - Click to Pay (CLICK_TO_PAY) |
| consumerInformation | - This object contains information about the consumer. <br>- Issuers are required to provide an _externalConsumerID_ to represent each consumer.<br>- Issuers are required to provide the BID of the Payment Card Issuer who has the relationship with the consumer (maintains the consumer profile) in the externalConsumerIDOwnerBID.<br>- The externalConsumerID together with the externalConsumerIDOwnerBID, uniquely identifies a consumer in the VICA and Click to Pay systems. All data provided will be linked to the combination of these two identifiers.<br>- Issuers are required to provide only mobile phone numbers within consumerInformation. | - Name<br>- Phone Number<br>- Email Address<br>- Status |
| paymentInformation | - This object contains information about the payment instrument. | - Card details |

### Available Endpoints

| Endpoint | Overview |
| --- | --- |
| Enroll Data<br>POST /v1/enrollData | - Create consumer and payment instrument information<br>- A consumer can be enrolled in a single product (e.g., Click to Pay) with a single API call. Another API call will be required to enroll consumer in another product |
| Enroll Payment Instruments<br>POST /v1/enrollPaymentInstruments | - Enroll payment instrument to an existing consumer |
| Manage Consumer Information <br>PUT /v1/manageConsumerInformation | - Update consumer information |
| Manage Payment Instrument Data<br>PUT  /v1/managePaymentInstruments | - Update payment instrument information |
| Get Data<br>POST /v1/getData | - Retrieve consumer and payment instrument information <br>- Only data from a single product can be retrieved with a single API call |
| Delete Consumer Information<br>POST  /v1/deleteConsumerInformation | - Delete consumer information <br>- The consumer's payment instruments will be deleted as well |
| Delete Payment Instrument Data<br>POST /v1/deletePaymentInstruments | - Delete payment instrument information |
| Request Status by Request Trace ID<br>GET /v1/requestStatus/{requestTraceId} | - Retrieve status of enrollment, consumer information management, payment instrument management, consumer information deletion, and payment instrument deletion requests submitted to Visa |
| Request Status Notification<br>POST /{Issuer Endpoint} | - Visa invokes this endpoint to notify the client of the completion of an asynchronously processed request.<br>- The endpoint is registered and configured by the client in Visa Developer Platform (VDP). |
| Click to Pay Enrollment Attempt Notification<br>POST /{Issuer Endpoint} | - Visa invokes this endpoint when a CTP enrollment attempt occurs when the card issuer is enabled for Issuer Offered Click to Pay (IoC).<br>- The endpoint is configured by the client in Visa Developer Platform (VDP) and mapped to the relevant account ranges in Visa Digital Configuration Service (VDCS) by Visa Client Configuration Management (CCM). |

### Errors

**Visa ID and Credential**

| HTTP Code | Reason Code | Error Description |
| --- | --- | --- |
| 400 | VIDC-1000 | Required field missing |
| 400 | VIDC-1001 | Invalid value / Request ID not found |
| 400 | VIDC-1002 | Length checks 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 |

**Click to Pay**

| Reason Code | Error Description |
| --- | --- |
| 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 |

### Frequently Asked Questions

#### 1. What is externalConsumerId?  
- externalConsumerID is a consumer ID that is a unique identifier of the consumer from the Issuer’s perspective. This is distinct from any payment instrument identifier as multiple payment instruments may be associated with a single externalConsumerID. It should be generated / provided by the Issuer.

#### 2. What is externalConsumerIdOwnerBID?  
- externalConsumerIDOwnerBID is the unique resource for identifying the Payment Card Issuer who has the relationship with the consumer (maintains the consumer profile). The externalConsumerIDOwnerBID with the externalConsumerID is what identifies a unique consumer in the VICA and Click to Pay systems and provides a link between enrollment and data management functions to ensure that updates are applied to the correct consumer record.

#### 3. Can I enroll into products separately through the common API?  
- The unified solution currently provides the capability to enroll onto a single product in a single API call. To enroll into Click to Pay, the intent field must include the Product Code “CLICK_TO_PAY”.

#### 4. Do I need to check consumer provided data before sending it to Visa?  
- Issuers must only enroll or update consumer and payment instrument related data for their own customers which they know to be accurate. It is the Issuer's responsibility to perform relevant KYC checks on their customer and address data and to validate the consumer has access to all email addresses and phone numbers supplied over the API.

### Disclaimer:  
This page is provided on an “as is, where is” basis, “with all faults” known and unknown.
