# Unified Click to Pay

## Merchants and Payment Service Providers

### Data Elements - Unified Click to Pay

All primitive and composite data elements are defined below. The request parameters and response attributes (returned if processing is successful) are provided in a single JSON object.

In the request parameters and response attributes tables for each SDK method, the column headed R/C/O in each table refers to whether the parameter/attribute is required, conditional or optional. The following notation is used:

- R = Required – always present.
- C = Conditional – present under certain conditions (as specified in the description).
- O = Optional – can be present.

### Data Objects

The following section introduces the common data objects used across the APIs defined in the SDK API Specification. Each table defines a single data object.

### Address

The allowed characters for the address line 1, 2, and 3 are: .',:_#/()ÁáÀàÂâÄäÃãÇçÉéÈèÊêËëÍíÎîÏïÑñÓóÔôÕõOEoeÚúÙùÛûÜüŸÿÆæĄąĆćĘęŁłŃńŚśŹźŻż/

| **Data Element** | **R/C/O** | **Description** |
| addressId<br>Type: String<br>Universally Unique Identifier (UUID) | O | Reference identifier of the address in the SRC System. |
| name<br>Type: String<br>Max Length = 100 | O | Name of the consumer. |
| line1<br>Type: String<br>Max Length = 75 | C | Address line 1<br>**Conditionality**: Required if this is a shipping address in a valid format for the country. |
| line2<br>Type: String<br>Max Length = 75 | O | Address line 2. |
| line3<br>Type: String<br>Max Length = 75 | O | Address line 3. |
| city<br>Type: String<br>Max Length = 50 | C | Address city.<br>**Conditionality**: Required if this is a shipping address in a valid format for the country. |
| state<br>Type: String<br>Max Length = 30 | C | Address state.<br>Recommendation to support ISO 3166-2 format i.e. made up of ISO 3166-1 alpha 2 country code, followed by an alphanumeric string of 3 characters representing the state or sub-division<br>**Conditionality**: Required if this is a shipping address in a valid format for the country. |
| zip<br>Type: String<br>Max Length = 16 | C | Address zip/postal code.<br>**Conditionality**: Required if this is a shipping address in a valid format for the country and has a postal code or zip code:<br>- US: must be 5-digit numeric value<br>- Canada: Must be 6-digit alphanumeric value. It is allowed to add an additional space character between 3rd and 4th digit.<br>- Australia: must be 4-digit numeric value<br>- Rest of the world: max 9 alphanumeric characters |
| countryCode<br>Type: String<br>ISO 3166-1 alpha-2 country code | R | Address country code. |
| createTime<br>Type: String (Numeric)<br>UTC time in Unix epoch format | O | Date and time the address was created. |
| lastUsedTime<br>Type: String (Numeric)<br>UTC time in Unix epoch format | O | Date and time the address was last used. |

### AssuranceData

| **Data Element** | **R/C/O** | **Description** |
| verificationData<br>Type: List<VerificationData><br>See VerificationData | R | Set of verification data structures relating to different types of assurance. |
| eci<br>Type: String<br>Max Length = 2 | O | If present, a value indicating the result of the authentication performed or attempted during a transaction. Use this value in the e-commerce authorization message to VisaNet.<br>It is one of the following values:<br>- 05 – Successful authentication<br>- 06 – Authentication attempted<br>- 07 – Authentication not performed |

### AuthenticationMethod

| **Data Element** | **R/C/O** | **Description** |
| authenticationMethodType<br>Type: AuthenticationMethodType<br>See AuthenticationMethodType enum | R | SRCi to indicate for a particular transaction if Click to Pay needs to perform managed authentication or not. |
| authenticationSubject<br>Type: AuthenticationSubject<br>See AuthenticationSubject enum | R | Authentication subject. |
| uriData<br>Type: UriData<br>See UriData | O | URI associated with the authentication method.<br>When authentication is invoked by launching the URI then AssuranceData, AuthenticationStatus, AuthenticationResult and any relevant session ids should be provided back asynchronously when authentication completes.<br>It can be achieved by cross origin post message between the windows i.e. the caller and the authenticator. |
| authenticationCredentialReference<br>Type: String<br>Max Length = 255 | O | May be provided by the identity provider once an authentication is initiated to qualify the nature of the authentication method (e.g. for SMS_OTP, this may include the masked mobile number "***-***-1234", which can be displayed to the consumer to aid method selection). |
| methodAttributes<br>Type: JSONObject | O | Attributes associated with the authentication method type. (See AuthenticationMethod Attributes JSON Values) |

### AuthenticationPreferences

| **Data Element** | **R/C/O** | **Description** |
| authenticationMethods <br>Type: List<AuthenticationMethod>  <br>See **AuthenticationMethod** | O | The list of authentication methods and associated parameters populated by the SRCI: <br>1. in its preferred order; or <br>2. as instructed by the SRC system |
| supressChallenge <br>Type: Boolean | O | SRCI preference to indicate challenge suppression. |
| payloadRequested <br>Type: PayloadRequested <br>See PayloadRequested | O | Indicates whether the SRCI or Merchant prefers an authenticated or non-authenticated payload. |

### Card

| **Data Element** | **R/C/O** | **Description** |
| primaryAccountNumber<br>Type: String (Numeric)<br>Min Length = 9<br>Max Length = 19 | R | The account number of the card to be enrolled and provisioned. |
| panExpirationMonth<br>Type: String (Numeric)<br>Length = 2 | C | Expiration month expressed as a two-digit month (MM).<br>**Conditionality**: Required when specified for the card (PAN). |
| panExpirationYear<br>Type: String (Numeric)<br>Length = 4 | C | Expiration year expressed as a four-digit calendar year (YYYY).<br>**Conditionality**: Required when specified for the card (PAN). |
| cardSecurityCode<br>Type: String (Numeric)<br>Length = 3 or 4 | C | Card security code.<br>**Conditionality**: Required when specified for the card (PAN). |
| cardholderFullName<br>Type: String<br>Max Length = 100 | C | Cardholder name.<br>**Conditionality**: Required when specified for the card (PAN). |
| cardholderFirstName<br>Type: String<br>Max Length = 50 | O | Cardholder first name. |
| cardholderLastName<br>Type: String<br>Max Length = 50 | O | Cardholder last name. |
| billingAddress<br>Type: Address<br>See Address | O | Billing address. |
| paymentAccountReference<br>Type: String<br>Max Length = 29 | O | A non-financial reference assigned to each unique PAN and used to link a payment account represented by that PAN to affiliated payment tokens. |

### CheckoutPayloadResponse

| **Data Element** | **R/C/O** | **Description** |
| srciTransactionId<br>Type: String<br>Max Length = 255 | R | A unique identifier generated by Visa SRCi **.** |
| maskedConsumer<br>Type: MaskedConsumer<br>See MaskedConsumer | C | Masked consumer data associated with the SRC profile.<br>**Conditionality**: Required for the Checkout and Get Payload operations if the associated SRC profile contains consumer data. |
| maskedCard<br>Type: MaskedCard<br>See MaskedCard | R | Masked card data. |
| shippingAddressZip<br>Type: String<br>Max Length = 16 | C | Zip or postal code of selected shipping address.<br>**Conditionality**: Required, depending on the dpaShippingPreference option in the dpaTransactionOptions structure.<br>- US: must be 5-digit numeric value<br>- Canada: Must be 6-digit alphanumeric value. It is allowed to add an additional space character between 3rd and 4th digit.<br>- Australia: must be 4-digit numeric value<br>- Rest of the world: max 9 alphanumeric characters |
| shippingAddressCountryCode<br>Type: String<br>ISO 3166-1 alpha-2 country code | C | Country code of selected shipping address.<br>**Conditionality**: Required, depending on the dpaShippingPreference option in the dpaTransactionOptions structure. |
| customOutputData<br>Type: JSONObject | O | SRC System-specific data. |
| assuranceData<br>Type: AssuranceData<br>See AssuranceData | O | Assurance data related to the checkout flow. |
| encryptedPayload<br>Type: JWE<Payload><br>See Payload | C | SRC Payload. Encrypted for the specific recipient.<br>**Conditionality**: encryptedPayload will be not present when:<br>- payloadTypeIndicatorCheckout is set to SUMMARY or<br>- actionCode in checkout operation response is set to PENDING_AUTHENTICATION. |

### ComplianceResource

| **Data Element** | **R/C/O** | **Description** |
| complianceType<br>Type: ComplianceType<br>See ComplianceType enum | R | Compliance type. |
| uri<br>Type: String<br>Max Length = 1024 | R | Uniform Resource Identifier (URI), a valid web address or URL. |
| version<br>Type: String<br>Max Length = 10 | O | Version. |
| datePublished<br>Type: String<br>UTC time in Unix epoch format | O | Date resource was published. |

### MaskedConsumer

| **Data Element** | **R/C/O** | **Description** |
| srcConsumerId<br>Type: String<br>Universally Unique Identifier (UUID) | O | Reference identifier generated by the SRC System.<br>**Note**: Optionally may be returned in Get Payload operation. |
| maskedConsumerIdentity<br>Type: MaskedConsumerIdentity<br>See MaskedConsumerIdentity | C | Masked value of the primary verifiable consumer identity within an SRC profile (e.g. an email address or a mobile phone number).<br>**Conditionality**: Returned in Get Payload operation. |
| maskedEmailAddress<br>Type: String<br>Max Length = 255 | O | Masked consumer email address.
