---
title: "Enroll customer and card in Visa CTP"
method: POST
path: "/v1/clicktopay/visa/enroll/customer"
tags: ["Visa Click to Pay"]
---

# Enroll customer and card in Visa CTP

`POST /v1/clicktopay/visa/enroll/customer`

## Request

- Base URL: `https://gw-pci.pismolabs.io/cards-tokenization`
- URL: `https://gw-pci.pismolabs.io/cards-tokenization/v1/clicktopay/visa/enroll/customer`
- Auth: HTTP bearer

Enroll a customer and card in <a href="https://usa.visa.com/products/click-to-pay/consumers.html" target="_blank">Visa's Click to Pay</a> service. Click to Pay is a secure, streamlined online checkout solution using tokenization.

 For more information, refer to [Click to Pay](doc:click-to-pay).

 This endpoint generates a [Click to Pay event generated](https://developers.pismo.io/events/docs/cards-tokenization-click-to-pay-1) event.

**Notes**:

- The following fields are **mandatory** to enroll a customer/card into Visa's Click to Pay: `first_name`, `last_name`, `emails`, `phones` and `billing_address`. If not passed and not found internally, an error is returned.

- The process is asynchronous, success or failure is indicated in the generated event.

- This endpoint takes an account token - an access token encoded with a Pismo account ID.

- This is a PCI endpoint, use the https://gw-pci.pismolabs.io environment.

## Headers

- `x-tenant` string, required
- `x-customer-id` integer, required
- `x-cid` string

## Request body

- ClickToPayEnrollData
  - `owner_bid` string, required: Owner business ID. Identifies the issuing entity creating or managing enrollment in Click to Pay.
  - `card_information` ClickToPayCardInfo, required
    - `card_id` number, required: Card ID
    - `billing_address` ClickToPayAddress
      - `city` string: City
      - `state` string, ISO 3166-2: State - ISO 3166-2 code format. For example - `RJ` (Rio de Janiero, Brazil)
      - `postal_code` string: Postal code
      - `country_code` string, ISO 3166-1-alpha3,: Country code - 3-character ISO 3166 (Alpha 3) format
      - `address_line1` string: Address line one
      - `address_line2` string: Address line two
      - `address_line3` string: Address line three
  - `customer_information` ClickToPayCustomerInfo, required
    - `locale` string, required: Consumer preferred locale (language and country). **Format**: two-letter ISO-639-1 language in lowercase + underscore ("_") + two-letter ISO 3166-1 country code in uppercase.
    - `first_name` string: Customer first name
    - `middle_name` string: Customer middle name
    - `last_name` string: Customer last name
    - `country_code` string, ISO 3166-1-alpha3: Country code&mdash;3-character ISO 3166 (Alpha 3) format
    - `emails` string[]: Customer emails
    - `phones` string[]: Customer phones
    - `national_identifiers` object[]: Customer national identifiers
      - `type` 'PASSPORT' | 'DRIVING_LICENSE' | 'NATIONAL_IDENTITY', required: Identification type
      - `value` string, required: Identification type value
    - `consent` ClickToPayConsent: Consent details
      - `time_of_consent` string, required: Date/time when consent becomes valid, in ISO UTC format YYYY-MM-DDThh:mm:ss.000Z. Only accepts present and past dates.
      - `version` string: Terms and conditions version that the customer accepted.
      - `presenter` string: Text identifying consent presenter.

## Response `202`

Accepted

## Other responses

- `400`: Bad Request
- `429`: Too Many Requests - Visa rate limit exceeded
- `500`: Internal Server Error

---

[API](https://skmtc.dev/pismo/apis/card-issuing-tokenization.md) - [All operations](https://skmtc.dev/pismo/apis/card-issuing-tokenization/llms.txt) - [OpenAPI document](https://skmtc.dev/pismo/apis/card-issuing-tokenization/revisions/fbf231735d66?raw)
