# Visa Card Program Management

# Visa Card Program Enrollment

VCPE supports issuers that want to offer instant/digital issuance or re-issuance; as well as allow their cardholders to upgrade and downgrade cards in their banking app and enjoy new rewards programs in near real-time without needing a physical card and without changing their 16-digit card number.

## Enrollment  v2 - Latest

Process enrollment and handover message to ALM.

### Request

##### header Parameters

|     |     |
| --- | --- |
| Accept<br>required | string<br>Accept |
| Accept-Language | string<br>Accept-Language |
| Content-Language | string<br>Content-Language |
| Content-Type<br>required | string<br>Content-Type |
| X-API-KEY<br>required | string<br>X-API-KEY |
| X-CHANNEL_ID<br>required | string<br>Default to VTIS |
| X-CLIENT-ID | string<br>X-CLIENT-ID |
| X-CORRELATION-ID<br>required | string<br>X-CORRELATION-ID |

##### Request Body schema: application/json

|     |     |
| --- | --- |
| operationType<br>required | string<br>Type of operation. Format: It is one of the following values: <br>UPDATE |
| updateReferenceID<br>required | string <= 32 characters <br>Reference ID that is needed to track all account level updates. |
| enrollmentInfo | object |
| |     |     |
| --- | --- |
| accountLevelInfo | object |
| |     |     |
| --- | --- |
| benefitsEnrollment | object |
| |     |     |
| --- | --- |
| addOnBenefits | Array of objects |
| Array

|     |     |
| --- | --- |
| action | string<br>(REQUIRED if addOnBenefits segment is present) <br>Action taken on the record for an enrollment addOnBenefits . Format: It is one of the following values: <br>Add— This value is to record a new enrollment or pre-enrollment record. All required fields must be provided. Use Add when submitting new requests. <br>Delete— This value must be used to deactivate any future pre-enroll/enrollment associations of any specific instance or benefit type. |
| activationEndDate | string <= 10 characters <br>(Optional) <br>Contains the date when the benefit will end for the Card Account Number. Format: String in the form of YYYYMMDD. |
| activationStartDate | string <= 10 characters <br>(Optional) <br>Contains the date when the benefit will be activated for the Card Account Number. Format: String in the form of YYYYMMDD. |
| enrollmentDate | string <= 10 characters <br>(Optional) <br>Contains the date when the cardholder signs up for specific benefit.If not provided, Enrollment Date will default to Activation Start Date., If Activation Start Date is not provided, Date will default to current processing date +1. Format: String in the form of YYYYMMDD. |
| enrollmentStatus | string <= 1 characters <br>(Conditional) <br>Enrollment status code for the card account being updated. Format: It is one of the following values: <br>P — Pre-enroll. <br>E — Enroll. <br>Must be provided for Add/Change records. Optional for Delete and Close records. However, Change & Close action are out of scope for current release. will be addressed as part of future phases. At this point no client has been using this action |
| featureId | object<br>(REQUIRED if addOnBenefits segment is present) <br>Feature ID for Benefits Enrollment . Format: Users must provide only one of the following three data fields for each record: <br>VFS Feature ID <br>Supplier Feature ID <br>Issuer Feature Reference ID |
| |     |     |
| --- | --- |
| issuerFeatureReferenceId | Array of strings<br>(Conditional) <br>identifies the add-on feature through a supplier (Service Provider)-defined attribute. Users identifying the feature this way would enter it in issuerFeatureReferenceID, and nothing in SupplierFeatureID, vfsFeatureID. |
| supplierFeatureId | Array of strings<br>(Conditional) <br>identifies the add-on feature through a unique ID previously defined by Visa. Users identifying the feature this way would enter it in SupplierFeatureID, and nothing in issuerFeatureReferenceID, vfsFeatureID. |
| vfsFeatureId | Array of strings<br>(Conditional) <br>identifies the add-on feature through an issuer-defined attribute. Can be blank if any of Issuer Feature Reference ID, Supplier Feature ID is populated. | | |
| portfolioBenefits | object |
| |     |     |
| --- | --- |
| action | string<br>(REQUIRED if portfolioBenefits segment is present) <br>Action for Benefits Enrollment. Format: It is one of the following values: <br>Add - This value is to record a new cardholder account. All required fields must be provided. Use Add when submitting new accounts. <br>Delete — This value must be used to remove cardholder data. To delete a record, the account number must be included. All other fields are optional. This value may only be used for accounts that have been submitted but have not yet been assigned to a portfolio because the Effective Start Date is in the future. <br>Change - This value must be used when changing existing cardholder enhancement data. It must also be used to remove enhancement assignments from active accounts (Effective Start Date is the current date or earlier). A change record will fully replace all data in the original record. Every required field must be submitted in a change record. If issuers choose to preserve previously submitted optional data, this optional data must also be submitted. - Out of scope for current release. will be addressed as part of future phases. At this point no client has been using this action |
| effectiveEndDate | string <= 10 characters <br>(Optional) <br>Can contain the effective end date of the account number for the specified portfolio ID. Format: String in the form of YYYYMMDD. |
| effectiveStartDate | string <= 10 characters <br>(REQUIRED if portfolioBenefits segment is present) <br>Contains the effective start date of the account number for the specified portfolio ID Format: String in the form of YYYYMMDD. | | |
| customerContactInfo | object |
| |     |     |
| --- | --- |
| action | string<br>(REQUIRED if customerContactInfo segment is present) <br>If an action other than Add is selected, the webservice call will be rejected. <br>Format: It is one of the following values: <br>Add— Use this to add new customer information. All required fields must be provided. |
| address | object<br>(Optional) Address details for the account holder. |
| |     |     |
| --- | --- |
| city | string <= 30 characters <br>(REQUIRED if customerContactInfo segment is present) <br>City associated with the account holder’s address. Format: String; alphanumeric; UTF-8, white space, carat (^), period (.), single quote (‘), asterisk (*), and hyphen (-) are allowed. |
| companyName | string <= 40 characters <br>(Conditional) Account holder’s company name. Format: String; alphanumeric; UTF-8, white space, comma (,), underscore (_), hashtag (#), colon (:), forward slash (/), period (.), single quote (‘), and hyphens (-) are allowed. |
| line1 | string <= 40 characters <br>(Optional) First line associated with the account holder’s address. Format: String; alphanumeric; UTF-8, white space, comma (,), underscore (_), hashtag (#), colon (:), forward slash (/), period (.), single quote (‘), asterisk (*), and hyphen (-) are allowed. |
| line2 | string <= 40 characters <br>(Optional) Second line associated with the account holder’s address. Format: String; alphanumeric; UTF-8, white space, comma (,), underscore (_), hashtag (#), colon (:), forward slash (/), period (.), single quote (‘), asterisk (*), and hyphen (-) are allowed. |
| state | string <= 2 characters <br>(Conditional) State or province code associated with the account holder’s address. Required for the US, but can be left blank for a non-US address. Example: NY Format: String; ISO 3166-2. |
| zip | string <= 5 characters <br>(Conditional) Account holder’s zipcode. Required for the US, but can be left blank for a non-US address. Format: String; numeric. | | 
| email | string <= 100 characters <br>(Conditional) Account holder’s email address. Required when prefMethodOfContact is E. |
| firstName | string <= 15 characters <br>(REQUIRED if customerContactInfo segment is present) <br>Account holder’s first name. |
| lastName | string <= 1 characters <br>(REQUIRED if customerContactInfo segment is present) <br>Account holder’s last name. |
| middleInitial | string <= 1 characters <br>(Optional) Account holder’s middle initial. |
| mobileNumber | string <= 10 characters <br>(Conditional) Account holder’s telephone number. Required when prefMethodOfContact is C. |
| namePrefix | string <= 5 characters <br>(Optional) Account holder’s name prefix. |
| nameSuffix | string <= 5 characters <br>(Optional) Account holder’s name suffix. |
| prefMethodOfContact | string <= 1 characters <br>(Optional) Account holder’s preferred method of contact; if a space or an empty string is specified, the preferred method of contact is no preference. <br>Format: It is one of the following values: M— Physical mail. <br>E— E mail. <br>C— Mobile telephone. | | 
| linkEnrollment | object |
| |     |     |
| --- | --- |
| group | Array of objects |
| Array

|     |     |
| --- | --- |
| action | string<br>(REQUIRED if linkEnrollment segment is present) <br>Action taken on the record for an enrollment link. Format: It is one of the following values: <br>Add— Record is for a new link. <br>Delete— Record is for removing a link. <br>Change— Can only be used to change the Primary Account flag. |
| groupID | string <= 32 characters <br>(REQUIRED if linkEnrollment segment is present) <br>Contains the issuer-supplied identifier for the group type specified in the Group Type field. Must not be PAI/PII data. Format: String; alphabetic, numeric, hyphens ( - ), and underscores ( _) \[a-zA-Z0-9-_ \]. |
| groupType | string<br>(REQUIRED if linkEnrollment segment is present) <br>Group type. Format: It is one of the following values:<br>LOC— Groups a primary card account with authorized accounts from other cardholders. <br>CUSTOMER— Groups a set of card accounts for the same cardholder. <br>VIRTUAL— Groups a primary card account with a set of virtual cards. <br>Note: A value for productID must be specified. Contact your Visa representative before <br>submitting a request using the VIRTUAL Group Type. <br>USHNW <br>Note: A value for productID must be specified. |
| isPrimaryAccount | string<br>(Conditional) Whether the account the account number is to be the primary account number in the group.. Used for group types that have a primary or owner account. It is required when groupType is LOC, or VIRTUAL. It should be set to Y for Primary (physical plastic card). Issuers should refer to the Product Implementation Guide for requirements related to custom group types. Format: It is one of the following values: <br>Y— The account number is to be the primary account number in the group. <br>Blank—The account number is not the primary account number. | | |
| productID | string <= 2 characters <br>This is the product ID for the card number in the Account Number field. It is required, when the rpinEnrollment structure is provided in the request, or when the linkEnrollment structure is present for either the USHNW or VIRTUAL groupType. For example if the product type of the card is ‘Visa Traditional Credit’, the value of productID is A. |
| replaceEnrollment | object |
| |     |     |
| --- | --- |
| linkReasonCode | string <= 1 characters <br>(Conditional) The reason for replacement. Format: It is one of the following values: <br>L— Lost: Consumer reports the card has been lost.<br>S— Stolen: Consumer reports the card has been stolen.<br>U— Upgrade/Downgrade: Consumer has been issued a new product.<br>O— Other: Used when no other value applies.<br>C— Converted<br>R— Reissued<br>N— Not known |
| oldAccountNumber | string <= 19 characters <br>(REQUIRED if replaceEnrollment segment is present) <br>A valid account number specifying the card is being replaced by the card number in the Account Number field. |
| unlinkIndicator | string <= 1 characters <br>(Conditional) Unlink indicator. This must be set to Y when deleting a replacement relationship. Format: It is one of the following values: <br>Y— User is trying to unlink the account number | |
| rpinEnrollment | object |
| |     |     |
| --- | --- |
| accountOpenDate | string <= 10 characters <br>(REQUIRED if rpinEnrollment segment is present) <br>The date the account number was first opened with the issuer. Format: String in the form of YYYYMMDD. |
| action | string<br>(REQUIRED if rpinEnrollment segment is present) <br>Action for RPIN Enrollment. Format: It is one of the following values: <br>Add— Use Add when submitting new card numbers; record is for a new account number. All required fields must be provided.<br>Change— Use if changing any attribute in rpinEnrollment data. A change record will fully replace all data in the original record. Every required field must be submitted in a change record. If issuers wish to preserve previously submitted optional data, this data must be resubmitted.<br>Delete— Use if removing an account number. For delete records, all other fields are optional. |
| rpin | string <= 6 characters <br>(REQUIRED if rpinEnrollment segment is present and rpinIssuerRefNumber is not present) <br>The six-digit Visa-provided Registered Program Identification Number (RPIN) in which this account is enrolled. The RPIN’s product ID in the Visa system must match the product ID provided in the web service call. Format: String; numeric; max length 6 characters. |
| rpinEffectiveDate | string <= 10 characters <br>(Optional) The RPIN effective date, which can be a past or future date, but it must be a date that is after the RPIN create-date and before the RPIN end-date. If the date does not follow these rules, the request is rejected with an Invalid Date reject reason. It will default to the current date if the correct date is not provided. Format: String; YYYYMMDD. |
| rpinIssuerRefNumber | string <= 9 characters <br>(REQUIRED if rpinEnrollment segment is present and rpin is not present) <br>The Visa-provided RPIN reference number <br>Format: String; numeric; max length 9 characters. | | |
| cardholderInfo | object |
| |     |     |
| --- | --- |
| primaryAccountNumber<br>required | string <= 19 characters <br>Primary account number | |

Responses

200
OK

##### Response Schema: application/json

object

202
Accepted. Request successfully persisted to queue.

400
Bad request. Incorrect parameters supplied.

500
Internal Server Error.
