---
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`

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](https://developers.pismo.io/pismo-docs/docs/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` integer, required — Enrolled 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
- `500` — Internal Server Error

---

[API](https://skmtc.net/pismo/apis/platform-authentication.md) · [All operations](https://skmtc.net/pismo/apis/platform-authentication/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/pismo/platform-authentication/versions/935b62e16de4/schema)
