First Steps

Make your first VICA call against the sandbox in five steps. You'll enroll a consumer and card into a product and confirm the result. This section uses Click to Pay as an example.

For the business and certification path to production, see Getting Started.

Calling your first API

1. Create a project and add Visa ID and credential

Create a Visa Developer project and add Visa ID and Credential (VICA). Existing VTS clients should work with their Visa Representative for setup. This generates the credentials you'll use to authenticate.

2. Set up authentication

VICA requires Two-Way SSL (mutual authentication) or X-Pay-Token authentication, and Message Level Encryption (MLE) for the payload. Configure both before calling (see Authentication and Security). You'll need your client certificate and the MLE key pair for the sandbox environment.

3. Send your first request

Call Enroll Data against the sandbox base URL with a Click to Pay enrollment. You can try calling this API using your API Client (e.g. Postman) or implement it directly in your code.

Set the header's Content Type:

Add Content Type as a JSON object: Content-Type: application/json

Set up authentication

Add your certificate and set the MLE key ID.

Configure the request URL

Use the sandbox Enroll Data endpoint:

POST "https://sandbox.api.visa.com/visaIdCredential/v1/enrollData"
		

Prepare the request body

Create a JSON request body with the required fields.

{
  "products": [
    {
      "productCode": "CLICK_TO_PAY"
    }
  ],
  "consumerInformation": {
    "externalConsumerID": "829662xw-54pl-50tr-c127-5368r18701",
    "firstName": "John",
    "middleName": "Robert",
    "lastName": "Doe",
    "countryCode": "USA",
    "locale": "en_US",
    "emails": [
      "[email protected]"
    ],
    "phones": [
      "14155551234"
    ],
    "paymentInstruments": [
      {
        "type": "CARD",
        "accountNumber": "4111111111111111",
        "nameOnCard": "John Doe",
        "expirationDate": "2029-12",
        "issuerName": "Bank A",
        "cardType": "Visa Platinum",
        "billingAddress": {
          "addressLine1": "500 Main Street",
          "addressLine2": "Apt 201",
          "city": "New York",
          "state": "NY",
          "postalCode": "10001",
          "country": "USA"
        }
      }
    ]
  }
}
		

Send the request

Make the POST request to the API endpoint with all headers and body configured.

Receive response

The call returns HTTP 202 with a requestTraceId.

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

4. Check the result

Enrollment is asynchronous. Use the requestTraceId to retrieve the outcome (valid for 7 days), along with the same authentication and content type headers:

GET "https://sandbox.api.visa.com/visaIdCredential/v1/requestStatus/351562ba-83cf-11ee-b962-0242ac120002"
		

A status of COMPLETED with each details[] item SUCCESS means the consumer is enrolled. Per-product failures appear as FAILED with errorDetails - see Errors and Troubleshooting.

5. Next steps

You've made your first call. Before building further, read Core Concepts to understand the data model, identity scheme, async processing, and request patterns - then pick the operation recipes you need from Implementation Guides.

Because writes are asynchronous, plan early for how you'll receive outcomes: either poll Request Status or build a notification receiver endpoint (see How to receive status notifications and Securing outbound notification endpoints).

Related