# Visa Commercial Fraud Solutions
Visa Commercial Fraud Solutions addresses various client needs across the commercial payments ecosystem. These solutions connect authentication, authorization intelligence, supplier integrity, and spend governance into a cohesive experience supporting large enterprise, middle-market companies, and small businesses. By aligning network-level intelligence, AI driven insights, configurable controls, and operational tools across the payment lifecycle, Visa helps issuers address evolving digital fraud risks while supporting secure, efficient commercial payment experiences.

## Version: 1

### Servers

| URL | Description |
| --- | ----------- |
| https://sandbox.api.visa.com | Sandbox server |

---
## Contact Management - Deprecated
Users can use Contact Management APIs to add email and mobile contacts to the existing accounts in VPC to receive notifications. Users can also manage contacts and are able to delete the contacts associated to an account or fetch all the contacts associated with the card.<br><br><b>Response code and description</b>: Refer to <a href=/capabilities/visa-b2b-payment-controls/docs-error-codes>Response code and description.</a>

### [POST] /vpc/v1/contactManagement/get
**Get Contact Details**

Users can use Get Contact API to fetch all the contact details associated to the account which will receive the notifications.

#### Request Body

Users can use Get Contact API to fetch all the contact details associated to the account which will receive the notifications.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**text/json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/*+json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: [ { **"accountsContacts"**: [ { **"status"**: string, **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ], **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } ], **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 207 | Mutli-status responses. This response is seen in case of bulk request scenario. For this response, go through each response to get the status of each contact. | **application/json**: { **"data"**: [ { **"accountsContacts"**: [ { **"status"**: string, **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ], **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } ], **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [POST] /vpc/v1/contactManagement/create
**Create Contact**

The Create Contact API allows user to add a mobile or email contacts to an existing account within VPC to receive the transaction notifications in their configured language.<br><br><b>Note</b>: Email notifications support Issuer/Entity branding and notification text is customizable. This will be part of the implementation process to set up the templates.

#### Request Body

The Create Contact API allows user to add a mobile or email contacts to an existing account within VPC to receive the transaction notifications in their configured language.<br><br><b>Note</b>: Email notifications support Issuer/Entity branding and notification text is customizable. This will be part of the implementation process to set up the templates.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"clientId"**: string, **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string, **"sequenceNumber"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**application/json**: { **"clientId"**: string, **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string, **"sequenceNumber"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**text/jso**: { **"clientId"**: string, **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string, **"sequenceNumber"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**application/*+json**: { **"clientId"**: string, **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string, **"sequenceNumber"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"serviceKey"**: string, **"accountLast4"**: string, **"contactsStatus"**: [ { **"status"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 207 | Mutli-status responses. This response is seen in case of bulk request scenario. For this response, go through each response to get the status of each contact. | **application/json**: { **"data"**: { **"serviceKey"**: string, **"accountLast4"**: string, **"contactsStatus"**: [ { **"status"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [DELETE] /vpc/v1/contactManagement/delete
**Delete Contact**

Users can use Delete Contact API to remove the contact from an account. This will prevent them from receiving future notifications.

#### Request Body

Users can use Delete Contact API to remove the contact from an account. This will prevent them from receiving future notifications.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"clientId"**: string, **"contacts"**: [ { **"contactType"**: string, **"contactValue"**: string, **"sequenceNumber"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**application/json**: { **"clientId"**: string, **"contacts"**: [ { **"contactType"**: string, **"contactValue"**: string, **"sequenceNumber"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**text/json**: { **"clientId"**: string, **"contacts"**: [ { **"contactType"**: string, **"contactValue"**: string, **"sequenceNumber"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**application/*+json**: { **"clientId"**: string, **"contacts"**: [ { **"contactType"**: string, **"contactValue"**: string, **"sequenceNumber"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"serviceKey"**: string, **"accountLast4"**: string, **"contactsStatus"**: [ { **"status"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 207 | Mutli-status responses. This response is seen in case of bulk request scenario. For this response, go through each response to get the status of each contact. | **application/json**: { **"data"**: { **"serviceKey"**: string, **"accountLast4"**: string, **"contactsStatus"**: [ { **"status"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

---
## Company Management - Deprecated
The Company Management API promotes self-service for company onboarding and ongoing company management.  It allows an entity to create a company, update company settings, delete a company, and well as retrieve all company setup details along with the cards associated to that company profile.<br><br><b>Response code and description</b>: Refer to <a href=/capabilities/visa-b2b-payment-controls/docs-error-codes>Response code and description.</a>

### [POST] /vpc/v1/companyManagement/get
**Get Company Details**

The Get Company Details API allows you to retrieve all the details of a company setup in VPC.  This will provide back the company information including company contact information, portfolio and setup information, as well as the service key and corresponding account information for those accounts linked to the company.

#### Request Body

The Get Company Details API allows you to retrieve all the details of a company setup in VPC.  This will provide back the company information including company contact information, portfolio and setup information, as well as the service key and corresponding account information for those accounts linked to the company.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**text/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/*+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"Accounts"**: [ { **"expDate"**: string, **"isToken"**: boolean, **"serviceKey"**: string, **"accountLast4"**: string, **"cardholderLastName"**: string, **"cardholderFirstName"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"companyName"**: string, **"portfolioId"**: string, **"contactEmail"**: string, **"contactPhone"**: string, **"totalAccounts"**: string }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [PUT] /vpc/v1/companyManagement/update
**Update Company**

The Update Company API allows users to modify the existing company setup in VPC.  You can update the company name as well as company contact email or phone number.

#### Request Body

The Update Company API allows users to modify the existing company setup in VPC.  You can update the company name as well as company contact email or phone number.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"newCompanyName"**: string, **"newContactEmail"**: string, **"newContactPhone"**: string }<br>**application/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"newCompanyName"**: string, **"newContactEmail"**: string, **"newContactPhone"**: string }<br>**text/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"newCompanyName"**: string, **"newContactEmail"**: string, **"newContactPhone"**: string }<br>**application/*+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"newCompanyName"**: string, **"newContactEmail"**: string, **"newContactPhone"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"companyId"**: string }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [POST] /vpc/v1/companyManagement/create
**Create Company**

The Create Company APIs allows users to setup a company in VPC.  After company setup, you can add accounts, add contacts for notifications, and set controls.<br><br><b>Note</b>:  Users have the ability to create individual companies or a larger global company.

#### Request Body

The Create Company APIs allows users to setup a company in VPC.  After company setup, you can add accounts, add contacts for notifications, and set controls.<br><br><b>Note</b>:  Users have the ability to create individual companies or a larger global company.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"clientId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"companyName"**: string, **"accountRange"**: string, **"contactEmail"**: string, **"contactPhone"**: string }<br>**application/json**: { **"clientId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"companyName"**: string, **"accountRange"**: string, **"contactEmail"**: string, **"contactPhone"**: string }<br>**text/json**: { **"clientId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"companyName"**: string, **"accountRange"**: string, **"contactEmail"**: string, **"contactPhone"**: string }<br>**application/*+json**: { **"clientId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"companyName"**: string, **"accountRange"**: string, **"contactEmail"**: string, **"contactPhone"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"companyId"**: string, **"portfolioId"**: string }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [DELETE] /vpc/v1/companyManagement/delete
**Delete Company**

Use the Delete Company API call to remove an existing company from VPC.  Companies can only be removed if they do not have card accounts associated to them  to minimize service disruption.

#### Request Body

Use the Delete Company API call to remove an existing company from VPC.  Companies can only be removed if they do not have card accounts associated to them  to minimize service disruption.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**text/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/*+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"companyId"**: string }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

---
## Control Management - Deprecated
Users can use Controls Management APIs to manage controls on an existing account in VPC. User should always send all the rules to be set on an account. <br>Once the rules are set, they are active immediately. Rules cannot be set for future date. <br>Date based rules follow GMT timezone and must be set accordingly.<br><br><b>Response code and description</b>: Refer to <a href=/capabilities/visa-b2b-payment-controls/docs-error-codes>Response code and description</a>

### [POST] /vpc/v1/controlsManagement/replace
**Set AccountControls**

Set Account Controls API can be used to set controls on existing accounts in VPC. Controls can be set on an individual account or the same controls can be set on multiple accounts. There is a rule details table in Visa Developer Platform that includes all the rules and their required parameters.

#### Request Body

Set Account Controls API can be used to set controls on existing accounts in VPC. Controls can be set on an individual account or the same controls can be set on multiple accounts. There is a rule details table in Visa Developer Platform that includes all the rules and their required parameters.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"rules"**: [ { **"rule"**: object } ], **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"ruleCurrency"**: string }<br>**application/json**: { **"rules"**: [ { **"rule"**: object } ], **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"ruleCurrency"**: string }<br>**text/json**: { **"rules"**: [ { **"rule"**: object } ], **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"ruleCurrency"**: string }<br>**application/*+json**: { **"rules"**: [ { **"rule"**: object } ], **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"ruleCurrency"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string, **"accountsStatus"**: [ { **"status"**: string, **"ruleCount"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }<br> |
| 207 | Mutli-status responses. This response is seen in case of bulk request scenario. For this response, go through each response to get the status of each account. | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string, **"accountsStatus"**: [ { **"status"**: string, **"ruleCount"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [POST] /vpc/v2/controlsManagement/get
**Get AccountControls**

Users can use Get Controls API to fetch all the controls set on an account. This API also provides the consumed amount limit and authorization count for the spend velocity control.

#### Request Body

Users can use Get Controls API to fetch all the controls along with mcgRuleAction set on an account. This API also provides the consumed amount limit and authorization count for the spend velocity control.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**application/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**text/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**application/*+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"rules"**: [ { **"rule"**: object } ], **"serviceKey"**: string, **"accountLast4"**: string, **"ruleCurrency"**: string, **"mcgRuleAction"**: string }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [POST] /vpc/v1/controlsManagement/get
**Get AccountControls**

Users can use Get Controls API to fetch all the controls set on an account. This API also provides the consumed amount limit and authorization count for the spend velocity control.

#### Request Body

Users can use Get Controls API to fetch all the controls set on an account. This API also provides the consumed amount limit and authorization count for the spend velocity control.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**application/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**text/json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br>**application/*+json**: { **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"rules"**: [ { **"rule"**: object } ], **"serviceKey"**: string, **"accountLast4"**: string, **"ruleCurrency"**: string }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [DELETE] /vpc/v1/controlsManagement/delete
**Delete AccountControls**

Users can use Delete Controls API to remove all the controls from the account. The rules will be removed immediately from one account or multiple accounts and these accounts can be used without any restriction.

#### Request Body

Users can use Delete Controls API to remove all the controls from the account. The rules will be removed immedialtely from one account or multiple accounts and these accounts can be used without any restriction.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**text/json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/*+json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"accountsStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 207 | Mutli-status responses. This response is seen in case of bulk request scenario. For this response, go through each response to get the status of each account. | **application/json**: { **"data"**: { **"accountsStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

---
## Commercial 3DS Authentication
The Commercial 3DS Authentication API provides a comprehensive suite of endpoints to manage the 3-D Secure (3DS) step-up authentication workflow for commercial virtual cards

### [POST] /vca/v1/commercial-validate/result
**Submit Validation Result**

This endpoint is designed for a Fintech to submit the outcome of a user's biometric authentication challenge.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"status"**: string, <br>**Available values:** "SUCCESS", "FAILURE", **"clientId"**: string, **"issuerId"**: string, **"issuerBid"**: string, **"acsClientId"**: string, **"authTraceId"**: string, **"processorId"**: string, **"errorMessage"**: string, **"transactionId"**: string, **"userMappingId"**: string, **"stepupRequestId"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | Accepted. The validation result has been successfully received and is being processed. | **application/json**: { **"error"**: { **"code"**: string, **"message"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ] }, **"status"**: string, <br>**Available values:** "ACCEPTED", "ERROR", **"requestId"**: string }<br> |
| 400 | Bad Request. The request body is missing required fields or contains invalid data. | **application/json**: { **"error"**: { **"code"**: string, **"message"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ] }, **"status"**: string, <br>**Available values:** "ACCEPTED", "ERROR", **"requestId"**: string }<br> |
| 500 | Internal Server Error. An unexpected error occurred while processing the request. | **application/json**: { **"error"**: { **"code"**: string, **"message"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ] }, **"status"**: string, <br>**Available values:** "ACCEPTED", "ERROR", **"requestId"**: string }<br> |

### [POST] /vca/v1/commercial-auth-data/authentication-record
**Save Authentication Record**

After the step-up process is fully completed and a definitive outcome is known, the ACS provider calls this endpoint to create a record of the authentication result.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"ECI"**: string, **"CAVV"**: string, **"CAVVHex"**: string, **"RequestID"**: string, **"RiskScore"**: string, **"ThreeRIInd"**: string, **"IssuerOrgId"**: string, **"MerchantInfo"**: { **"AcquirerId"**: string, **"MerchantId"**: string, **"MerchantURL"**: string, **"MerchantName"**: string, **"AcquirerCountryCode"**: string, **"MerchantCountryCode"**: string, **"MerchantCategoryCode"**: string, **"MerchantAppRedirectURL"**: string }, **"ExemptionInfo"**: { **"MCRiskScore"**: string, **"WhitelistStatus"**: string, **"MerchantFraudRate"**: string, **"WhitelistStatusSource"**: string, **"SecureCorporatePayment"**: string }, **"ExtensionData"**: { **"ACSRBA"**: { **"Score"**: string, **"Status"**: string, **"Decision"**: string, **"ReasonCode1"**: string, **"ReasonCode2"**: string }, **"DAFExtension"**: { **"Version"**: string, **"DAFAdvice"**: string, **"AuthPayCredStatus"**: string, <br>**Available values:** "Y", "N", "U", "B", "I", **"AuthPayProcessReqInd"**: string }, **"EMVPaymentToken"**: { **"Version"**: string, **"TokenRequestorId"**: string, **"TokenAdditionalData"**: { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string }, **"TokenStatusIndicator"**: string }, **"VisaPaymentTokenExtension"**: { **"Token"**: string, **"Version"**: string, **"TokenCryptogram"**: string, **"TokenRequestorId"**: string, **"TokenAdditionalData"**: { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string }, **"TokenAssuranceMethod"**: string, **"TokenStatusIndicator"**: string, <br>**Available values:** "A", "I", "S", "D", "P", **"TokenCryptogramValidityIndicator"**: string, <br>**Available values:** "01", "02", "03" } }, **"MessageVersion"**: string, **"DSTransactionId"**: string, **"TransactionInfo"**: { **"Channel"**: string, <br>**Available values:** "WEB", "APP", "MWEB", "THREERI", **"DeviceInfo"**: { **"IP"**: string, **"Locale"**: string, **"Latitude"**: string, **"Platform"**: string, **"SDKAppId"**: string, **"Longitude"**: string, **"UserAgent"**: string, **"DeviceName"**: string, **"DeviceModel"**: string, **"BrowserWidth"**: string, **"AdvertisingId"**: string, **"BrowserLanguage"**: string, **"BrowserTimeZone"**: string, **"ScreenResolution"**: string, **"BrowserColorDepth"**: string, **"BrowserJavaEnabled"**: string, **"DeviceExtendedData"**: string, **"BrowserAcceptHeader"**: string, **"BrowserScreenHeight"**: string, **"OperatingSystemName"**: string, **"OperatingSystemVersion"**: string, **"BrowserJavascriptEnabled"**: boolean }, **"FlowStatus"**: string, <br>**Available values:** "Fully Authenticated", "Not Authenticated", "Not Authenticated with Feedback", "Attempts", "Merchant Cancelled", "Cardholder Cancelled", "Incomplete", "Unavailable", "Rejected", "Informational Only", **"PaymentInfo"**: { **"CardType"**: string, <br>**Available values:** "Credit", "Debit", "Not Applicable", **"CardNumber"**: string, **"CardExpiryYear"**: string, **"CardHolderName"**: string, **"CardExpiryMonth"**: string }, **"ReasonCodes"**: { **"Risk"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"StepUp"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"Validate"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"InitiateAction"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string } }, **"AddressMatch"**: string, <br>**Available values:** "Y", "N", **"ConsumerInfo"**: { **"WorkNumber"**: string, **"PhoneNumber"**: string, **"EmailAddress"**: string, **"MobileNumber"**: string }, **"PurchaseType"**: string, <br>**Available values:** "GoodsOrService", "CheckAcceptance", "AccountFunding", "QuasiCash", "PrepaidActivation", **"RuleTriggered"**: string, **"VcasPanStatus"**: string, **"BillingAddress"**: { **"Region"**: string, **"Address1"**: string, **"Address2"**: string, **"Address3"**: string, **"LastName"**: string, **"Locality"**: string, **"FirstName"**: string, **"MiddleName"**: string, **"PostalCode"**: string, **"CountryCode"**: string }, **"MandatedRegion"**: string, <br>**Available values:** "EEA", "NONE", "UNKNOWN", **"ChallengeCancel"**: string, **"ShippingAddress"**: { **"Region"**: string, **"Address1"**: string, **"Address2"**: string, **"Address3"**: string, **"LastName"**: string, **"Locality"**: string, **"FirstName"**: string, **"MiddleName"**: string, **"PostalCode"**: string, **"CountryCode"**: string }, **"TransactionType"**: string, <br>**Available values:** "Purchase", "CardAdd", **"RiskProviderInfo"**: { **"Name"**: string, <br>**Available values:** "ThreatMetrix", **"DeviceId"**: string, **"ProviderId"**: string }, **"TransactionAmount"**: number, **"ConsumerWalletInfo"**: { **"Provider"**: string, **"WalletAge"**: long, **"PaymentCardAge"**: long }, **"TransactionCurrency"**: string, **"TransactionExponent"**: integer, **"TransactionAmountUSD"**: number, **"TransactionTimeStamp"**: string, **"MerchantAdditionalData"**: { **"PreorderDate"**: string, **"GiftCardCount"**: string, **"GiftCardAmount"**: string, **"GiftCardCurrency"**: string, **"DeliveryTimeFrame"**: string, <br>**Available values:** "ElectronicDelivery", "SameDayShipping", "OvernightShipping", "TwoOrMoreDaysShipping", **"ShippingIndicator"**: string, <br>**Available values:** "ShipToBillingAddress", "ShipToVerifiedAddress", "ShipToOtherAddress", "ShipToStore", "DigitalGoods", "TravelOrEventTickets", "Other", **"DeliveryEmailAddress"**: string, **"ReorderItemsIndicator"**: string, <br>**Available values:** "FirstTime", "Reordered", **"PreorderPurchaseIndicator"**: string, <br>**Available values:** "MerchandiseAvailable", "FutureAvailability" } }, **"TransStatusReason"**: string, **"AuthenticationType"**: string, <br>**Available values:** "OTP", "OTPEMAIL", "OTPSMS", "OTPIVR", "KBASINGLE", "BIOMETRIC", "BIOMETRIC_FACIAL", "BIOMETRIC_FINGERPRINT", "OUTOFBANDOTHER", **"AuthenticationResponse"**: string, <br>**Available values:** "Y", "N", "U", "A", "R", "I", **"AdditionalRiskResultInfo"**: { **"IPVelocity"**: string, **"RiskIndicator"**: string, **"DeviceIDVelocity"**: string }, **"MerchantChallengeIndicator"**: string, **"threeDSRequestorPriorAuthenticationInfo"**: { **"threeDSReqPriorRef"**: string, **"threeDSReqPriorAuthData"**: string, **"threeDSReqPriorAuthMethod"**: string, **"threeDSReqPriorAuthTimestamp"**: string } }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK. The authentication record was successfully saved. | **application/json**: { **"Error"**: { **"Description"**: string, **"ReferenceNumber"**: string }, **"Status"**: string, <br>**Available values:** "SUCCESS", "FAILURE", "ERROR" }<br> |
| 400 | Bad Request. The request could not be processed due to invalid parameters. | **application/json**: { **"Error"**: { **"Description"**: string, **"ReferenceNumber"**: string }, **"Status"**: string, <br>**Available values:** "SUCCESS", "FAILURE", "ERROR" }<br> |

### [POST] /vca/v1/commercial-step-up/auth/initiate
**Initiate Authentication**

After determining the authentication method using the Get Authentication Method endpoint, the ACS provider invokes this operation to initiate the step-up authentication challenge. Depending on the StepupType specified in the request, the endpoint either sends a One-Time Password (OTP) to the Fintech for the OTP authentication method or notifies the Fintech to initiate a biometric challenge for the BIOMETRIC authentication method.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"IssuerId"**: string, **"StepupType"**: string, <br>**Available values:** "OTP", "BIOMETRIC", **"Credentials"**: [ { **"Id"**: string, **"Text"**: string, **"Type"**: string, <br>**Available values:** "OTPEMAIL", "OTPSMS", "OTPIVR", "KBASINGLE", "BIOMETRIC", "OUTOFBANDOTHER", "OUTOFBANDTOKEN", **"Token"**: string, **"CustomerId"**: string } ], **"PaymentInfo"**: { **"CardType"**: string, <br>**Available values:** "Credit", "Debit", "Not Applicable", **"CardNumber"**: string, **"CardExpiryYear"**: string, **"CardHolderName"**: string, **"CardExpiryMonth"**: string }, **"ProcessorId"**: string, **"3RIIndicator"**: string, **"MerchantInfo"**: { **"AcquirerId"**: string, **"MerchantId"**: string, **"MerchantURL"**: string, **"MerchantName"**: string, **"AcquirerCountryCode"**: string, **"MerchantCountryCode"**: string, **"MerchantCategoryCode"**: string, **"MerchantAppRedirectURL"**: string }, **"CardBrandName"**: string, <br>**Available values:** "DISCOVER", "VISA", "MASTERCARD", "JCB", "AMEX", "DINERS", "ELO", "UPI", "EFTPOS", "MADA", "MYDEBIT", "TAKAPAY", "ITMX", "JAYWAN", **"StepupCounter"**: integer, **"TransactionId"**: string, **"MessageVersion"**: string, **"OOBCallbackUrl"**: string, **"DSTransactionId"**: string, **"MessageCategory"**: string, **"StepupRequestId"**: string, **"TransactionInfo"**: { **"Channel"**: string, <br>**Available values:** "WEB", "APP", "M_WEB", "THREERI", **"MandatedRegion"**: string, <br>**Available values:** "EEA", "NONE", "UNKNOWN", **"TransactionType"**: string, <br>**Available values:** "Purchase", "CardAdd", **"TransactionAmount"**: number, **"TransactionCurrency"**: string, **"TransactionExponent"**: integer, **"TransactionTimeStamp"**: string }, **"OtpReferenceCode"**: string, **"RDXMessageVersion"**: string, **"VerificationToken"**: string, **"ThreeDSRequestorAuthenticationInd"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK. The authentication challenge was successfully initiated. | **application/json**: { **"Error"**: { **"Message"**: string, **"Description"**: string, **"ReferenceNumber"**: string, **"ReasonDescription"**: string }, **"Reason"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"Status"**: string, <br>**Available values:** "SUCCESS", "FAILURE", "ERROR", **"IssuerId"**: string, **"Language"**: string, **"StepupType"**: string, <br>**Available values:** "OTP", "BIOMETRIC", **"Credentials"**: [ { **"Id"**: string, **"Text"**: string, **"Type"**: string, <br>**Available values:** "OTPEMAIL", "OTPSMS", "OTPIVR", "KBASINGLE", "BIOMETRIC", "OUTOFBANDOTHER", "OUTOFBANDTOKEN", **"Token"**: string, **"CustomerId"**: string } ], **"ProcessorId"**: string, **"RiskIndicator"**: string, **"TransactionId"**: string, **"StepupRequestId"**: string, **"TransStatusReason"**: string, **"IsBbConsentRequired"**: boolean }<br> |

### [POST] /vca/v1/commercial-lookup/credential-type
**Get Authentication Method**

This is the initial step in the 3DS step-up authentication flow. An ACS provider calls this endpoint to determine the available authentication methods for a cardholder based on their card and transaction details. The response will specify the Stepup type that should be used for the challenge, such as OTP or BIOMETRIC, enabling the ACS to proceed with the appropriate authentication challenge.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"IssuerId"**: string, **"PaymentInfo"**: { **"CardType"**: string, <br>**Available values:** "Credit", "Debit", "Not Applicable", **"CardNumber"**: string, **"CardExpiryYear"**: string, **"CardHolderName"**: string, **"CardExpiryMonth"**: string }, **"ProcessorId"**: string, **"3RIIndicator"**: string, **"DeviceLocale"**: string, **"MerchantInfo"**: { **"AcquirerId"**: string, **"MerchantId"**: string, **"MerchantURL"**: string, **"MerchantName"**: string, **"AcquirerCountryCode"**: string, **"MerchantCountryCode"**: string, **"MerchantCategoryCode"**: string, **"MerchantAppRedirectURL"**: string }, **"StepupReason"**: string, **"CardBrandName"**: string, <br>**Available values:** "DISCOVER", "VISA", "MASTERCARD", "JCB", "AMEX", "DINERS", "ELO", "UPI", "EFTPOS", "MADA", "MYDEBIT", "TAKAPAY", "ITMX", "JAYWAN", **"ExtensionData"**: { **"DAFExtension"**: { **"Version"**: string, **"DAFAdvice"**: string, **"AuthPayCredStatus"**: string, **"AuthPayProcessReqInd"**: string }, **"VisaPaymentTokenExtension"**: { **"Token"**: string, **"Version"**: string, **"TokenCryptogram"**: string, **"TokenRequestorId"**: string, **"TokenAdditionalData"**: { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string }, **"TokenAssuranceMethod"**: string, **"TokenStatusIndicator"**: string, <br>**Available values:** "A", "I", "S", "D", "P", **"TokenCryptogramValidityIndicator"**: string, <br>**Available values:** "01", "02", "03" } }, **"StepupCounter"**: integer, **"TransactionId"**: string, **"MessageVersion"**: string, **"DSTransactionId"**: string, **"DeviceUserAgent"**: string, **"MessageCategory"**: string, **"StepupRequestId"**: string, **"TransactionInfo"**: { **"Channel"**: string, <br>**Available values:** "WEB", "APP", "M_WEB", "THREERI", **"MandatedRegion"**: string, <br>**Available values:** "EEA", "NONE", "UNKNOWN", **"TransactionType"**: string, <br>**Available values:** "Purchase", "CardAdd", **"TransactionAmount"**: number, **"TransactionCurrency"**: string, **"TransactionExponent"**: integer, **"TransactionTimeStamp"**: string }, **"RDXMessageVersion"**: string, **"EmbeddedOOBResponseUrl"**: string, **"CardholderSelectionInfo"**: { **"Name"**: string, **"Type"**: string, <br>**Available values:** "P", "S" }, **"ThreeDSRequestorAuthenticationInd"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK. The available authentication methods were successfully retrieved. | **application/json**: { **"Error"**: { **"Message"**: string, **"Description"**: string, **"ReferenceNumber"**: string, **"ReasonDescription"**: string }, **"Reason"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"Status"**: string, <br>**Available values:** "SUCCESS", "FAILURE", "ERROR", **"WhyInfo"**: { **"Text"**: string, **"Label"**: string }, **"IssuerId"**: string, **"Language"**: string, **"OobAppURL"**: string, **"StepupType"**: string, <br>**Available values:** "OTP", "BIOMETRIC", **"Credentials"**: [ { **"Id"**: string, **"Text"**: string, **"Type"**: string, <br>**Available values:** "OTPEMAIL", "OTPSMS", "OTPIVR", "KBASINGLE", "BIOMETRIC", "OUTOFBANDOTHER", "OUTOFBANDTOKEN", **"Token"**: string, **"CustomerId"**: string } ], **"ProcessorId"**: string, **"RiskIndicator"**: string, **"TransactionId"**: string, **"StepupRequestId"**: string, **"TransStatusReason"**: string, **"IsBbConsentRequired"**: boolean }<br> |

---
## Rules Management
Users can use Rules Management APIs to manage controls on an existing account in VPC. User should always send all the rules to be set on an account. Once the rules are set, they are active immediately. Rules can be set for future dates. 

### [POST] /vpc/v1/rules/set
**Set Rules**

The Set Rules API allows you to apply controls to existing accounts in VPC, either immediately or at a specified future date. The Visa Developer Platform provides a rule details table that lists all available rules along with their required parameters.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"rules"**: [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ], **"endDate"**: date, **"timezone"**: string, <br>**Default:** GMT Standard Time, **"issuerBid"**: string, **"startDate"**: date, **"ruleCurrency"**: string, **"accountNumber"**: string, **"mcgRuleAction"**: string, <br>**Available values:** "ALLOW", "BLOCK", **"tokenReferenceId"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errormessage"**: string }<br> |

### [POST] /vpc/v1/rules/block
**Block Account**

Use this operation to block an existing account from processing any transactions and to remove all rules currently applied to that account.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"issuerBid"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errormessage"**: string }<br> |

### [DELETE] /vpc/v1/rules/delete
**Delete Rules**

Use this operation to remove all current and/or future rules from a card. You can clear all rules at once, or use the set rules operation to replace existing rules with new ones. Please note that individual rules cannot be deleted separately.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"issuerBid"**: string, **"accountNumber"**: string, **"deleteFutureRules"**: boolean, **"deleteCurrentRules"**: boolean }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errormessage"**: string }<br> |

### [POST] /vpc/v1/rules/disable-enable
**Disable Enable Rules**

Use this operation to temporarily disable all rules on an account. You can also use the same endpoint to re-enable previously disabled rules when needed. Additionally, the disable rule feature allows you to block the account if required.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"blockRule"**: boolean, **"isDisable"**: boolean, **"issuerBid"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errormessage"**: string }<br> |

### [POST] /vpc/v1/rules/get
**Get Rules**

Users can use Get Rules API to fetch all the controls set on an account. This API also provides the consumed spending amount and authorization count for the Spend Velocity (SPV) and Spend Policy Control (SPP).

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"issuerBid"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"rules"**: [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ], **"endDate"**: date, **"message"**: string, **"disabled"**: boolean, **"timezone"**: string, <br>**Default:** GMT Standard Time, **"requestId"**: string, **"startDate"**: date, **"futureRules"**: [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ], **"messageCode"**: string, **"ruleCurrency"**: string, **"accountNumber"**: string, **"mcgRuleAction"**: string, <br>**Available values:** "ALLOW", "BLOCK", **"disabledwithBlock"**: boolean, **"futureRulesEndDate"**: date, **"futureRulesTimezone"**: string, <br>**Default:** GMT Standard Time, **"futureRulesStartDate"**: date, **"futureRulesRuleCurrency"**: string, **"futureRulesMcgRuleAction"**: string, <br>**Available values:** "ALLOW", "BLOCK" }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errormessage"**: string }<br> |

---
## Supplier Validation
The Supplier Validation solution allows clients to efficiently identify and trust suppliers. Clients may search for and retrieve trusted supplier information, including Acquirer ID and CAID, which can then be used to establish or update payment controls through existing B2B Payment Controls APIs or B2B Payables APIs. This solution supports fraud mitigation in virtual commercial transactions by ensuring that payments are authorized exclusively for verified, trusted suppliers.

### [POST] /suppliervalidation/v1/update
**Update Supplier**

This API permits clients to make changes to the attributes of an already existing Trusted Supplier. Moreover, it includes an option for clients to remove trust at the Supplier or at the Acquirer BIN/CAID level

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ClientId | header | Client ID field is a unique identification of the financial institution. Provided by Visa during onboarding to VDP | Yes | string | No |
| CorrelationId | header | Correlation ID is a header which we use to trace an api call from VDP to backend | Yes | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"buyerId"**: string, **"issuerId"**: string, **"messageId"**: string, **"buyerSupplierId"**: string } & { **"supplierTrustStatusInd"**: boolean, **"acquirerBinCaidMappings"**: [ { **"caid"**: string, **"acquirerBin"**: string } & { **"acquirerBinCaidTrustStatusInd"**: boolean } ] }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Successful operation | **application/json**: { **"messageId"**: string, **"statusCode"**: string, **"statusDescription"**: string, **"supplierTrustStatusInd"**: boolean }<br> |
| 400 | Bad request - validation errors | **application/json**: { **"errorCode"**: string, **"messageId"**: string, **"statusCode"**: string, **"errorMessage"**: string, **"statusDescription"**: string }<br> |
| 401 | Authentication error | **application/json**: { **"errorCode"**: string, **"messageId"**: string, **"statusCode"**: string, **"errorMessage"**: string, **"statusDescription"**: string }<br> |
| 500 | Internal server error | **application/json**: { **"errorCode"**: string, **"messageId"**: string, **"statusCode"**: string, **"errorMessage"**: string, **"statusDescription"**: string }<br> |

### [POST] /suppliervalidation/v1/retrieve
**Retrieve Supplier**

This API allows clients to retrieve information regarding Trusted Suppliers

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ClientId | header | Client ID field is a unique identification of the financial institution. Provided by Visa during onboarding to VDP | Yes | string | No |
| CorrelationId | header | Correlation ID is a header which we use to trace an api call from VDP to backend | Yes | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"buyerId"**: string, **"issuerId"**: string, **"messageId"**: string, **"buyerSupplierId"**: string } & { **"includeUntrustedBinCaids"**: boolean }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Successful operation | **application/json**: { **"messageId"**: string, **"statusCode"**: string, **"contactInfo"**: { **"city"**: string, **"state"**: string, **"zipCode"**: string, **"countryCode"**: string, **"addressLine1"**: string, **"addressLine2"**: string, **"addressLine3"**: string, **"supplierName"**: string }, **"statusDescription"**: string, **"supplierTrustStatusInd"**: boolean, **"acquirerBinCaidMappings"**: [ { **"caid"**: string, **"acquirerBin"**: string } & { **"acquirerBinCaidTrustStatusInd"**: boolean } ] }<br> |
| 400 | Bad request - validation errors | **application/json**: { **"errorCode"**: string, **"messageId"**: string, **"statusCode"**: string, **"errorMessage"**: string, **"statusDescription"**: string }<br> |
| 401 | Authentication error | **application/json**: { **"errorCode"**: string, **"messageId"**: string, **"statusCode"**: string, **"errorMessage"**: string, **"statusDescription"**: string }<br> |
| 500 | Internal server error | **application/json**: { **"errorCode"**: string, **"messageId"**: string, **"statusCode"**: string, **"errorMessage"**: string, **"statusDescription"**: string }<br> |

### [POST] /api/v1/supplier-validation/register
**Register-Supplier**

Register a new supplier with buyer-supplier relationship details. This operation registers the relationship between a buyer and supplier, including acquirer BIN/CAID information and contact details and returns supplier details upon successful registration.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"caid"**: string, **"buyerId"**: string, **"clientId"**: string, **"issuerBid"**: string, **"requestId"**: string, **"acquirerBin"**: string, **"contactInfo"**: { **"city"**: string, **"state"**: string, **"postalCode"**: string, **"countryCode"**: string, **"addressLine1"**: string, **"addressLine2"**: string, **"addressLine3"**: string, **"supplierName"**: string }, **"buyerSupplierId"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: { **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"requestId"**: string, **"statusCode"**: string, **"statusMessage"**: string, **"supplierDetails"**: { **"storeName"**: string, **"supplierCity"**: string or null, **"supplierName"**: string, **"terminalType"**: [ string ] or null, **"supplierState"**: string or null, **"enterpriseName"**: string or null, **"supplierPostalCode"**: string or null, **"supplierCountryCode"**: string or null, **"supplierStreetAddress"**: string or null, **"locationAddressLatitude"**: string or null, **"paymentAcceptanceMethod"**: [ string ] or null, **"locationAddressLongitude"**: string or null }, **"validatedAcquirerBinCaidCount"**: string }<br> |
| 400 | Bad Request — request validation failed | **application/json**: { **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"requestId"**: string, **"statusCode"**: string, **"statusMessage"**: string }<br> |
| 500 | Internal Server Error | **application/json**: { **"requestId"**: string, **"statusCode"**: string, **"statusMessage"**: string }<br> |

### [POST] /api/v1/supplier-validation/retrieve
**Retrieve-Supplier**

Retrieve the validation status for an existing supplier.
Returns the current validation status for the specified acquirer BIN and CAID combination.
If the BIN-CAID is not found locally, the service automatically refreshes from GMR before responding.
If the supplier has been untrusted, returns `isValidated: "false"` without triggering a GMR refresh.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"caid"**: string, **"buyerId"**: string, **"clientId"**: string, **"issuerBid"**: string, **"requestId"**: string, **"acquirerBin"**: string, **"transactionId"**: string, **"buyerSupplierId"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: { **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"requestId"**: string, **"statusCode"**: string, **"isValidated"**: string, <br>**Available values:** "true", "false", **"statusMessage"**: string }<br> |
| 400 | Bad Request — request validation failed | **application/json**: { **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"requestId"**: string, **"statusCode"**: string, **"statusMessage"**: string }<br> |
| 500 | Internal Server Error | **application/json**: { **"requestId"**: string, **"statusCode"**: string, **"statusMessage"**: string }<br> |

### [POST] /suppliervalidation/v1/register
**Register Supplier**

This API enables clients to request Visa to create a new Trusted Supplier. Visa will create the supplier and provide all pertinent Acquirer BIN/CAID trust information in the response

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ClientId | header | Client ID field is a unique identification of the financial institution. Provided by Visa during onboarding | Yes | string | No |
| CorrelationId | header | Correlation ID is a header which we use to trace an api call from VDP to backend | Yes | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"buyerId"**: string, **"issuerId"**: string, **"messageId"**: string, **"buyerSupplierId"**: string } & { **"caid"**: string, **"acquirerBin"**: string, **"contactInfo"**: { **"city"**: string, **"state"**: string, **"zipCode"**: string, **"countryCode"**: string, **"addressLine1"**: string, **"addressLine2"**: string, **"addressLine3"**: string, **"supplierName"**: string } }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Successful operation | **application/json**: { **"messageId"**: string, **"statusCode"**: string, **"contactInfo"**: { **"city"**: string, **"state"**: string, **"zipCode"**: string, **"countryCode"**: string, **"addressLine1"**: string, **"addressLine2"**: string, **"addressLine3"**: string, **"supplierName"**: string }, **"statusDescription"**: string, **"merchantBinCaidMatchDetail"**: [ { **"caid"**: string, **"acquirerBin"**: string } ], **"acquirerBinCAIDAlreadyTrusted"**: boolean, **"moreMatchesAvailableIndicator"**: boolean }<br> |
| 400 | Bad request - validation errors | **application/json**: { **"errorCode"**: string, **"messageId"**: string, **"statusCode"**: string, **"errorMessage"**: string, **"statusDescription"**: string }<br> |
| 401 | Authentication error | **application/json**: { **"errorCode"**: string, **"messageId"**: string, **"statusCode"**: string, **"errorMessage"**: string, **"statusDescription"**: string }<br> |
| 500 | Internal server error | **application/json**: { **"errorCode"**: string, **"messageId"**: string, **"statusCode"**: string, **"errorMessage"**: string, **"statusDescription"**: string }<br> |

### [PUT] /api/v1/supplier-validation/update
**Update-Supplier**

Update the validation status to untrusted for an existing buyer-supplier relationship.         
Only untrusting is supported — `supplierValidationStatusInd` must be `"false"`.         
Updating at the individual acquirer BIN/CAID level is not supported through this operation.         
Once set to untrusted, the status cannot be reversed via this API.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"buyerId"**: string, **"clientId"**: string, **"issuerBid"**: string, **"requestId"**: string, **"buyerSupplierId"**: string, **"supplierValidationStatusInd"**: string, <br>**Available values:** "false" }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success | **application/json**: { **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"requestId"**: string, **"statusCode"**: string, **"statusMessage"**: string }<br> |
| 400 | Bad Request — request validation failed | **application/json**: { **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"requestId"**: string, **"statusCode"**: string, **"statusMessage"**: string }<br> |
| 500 | Internal Server Error | **application/json**: { **"requestId"**: string, **"statusCode"**: string, **"statusMessage"**: string }<br> |

---
## Account Management
Users can leverage the Account Management APIs to create and manage their accounts within Visa B2B Payment Controls (VPC). The accounts need to be within the ranges specified during the onboarding of the Issuer or a Commercial Client. This service also allows users to add payment controls, manage account contacts, update company information, delete accounts, and access account details from the system.

### [POST] /vpc/v1/account/get
**Get Account**

Use this operation to retrieve a particular Account's details along with its current contact information.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"issuerBid"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"data"**: { **"isToken"**: boolean, **"contacts"**: [ { **"contact"**: string, **"countryCode"**: string, **"dialingCode"**: string, **"languageCode"**: string, **"notificationFormat"**: string, **"notificationChannel"**: string, <br>**Available values:** "EMAIL", "SMS", "BOTH", "NONE" } ], **"lastName"**: string, <br>**Default:** LNU, **"firstName"**: string, <br>**Default:** FNU, **"accountKey"**: string, **"companyName"**: string, **"customerClientID"**: string, **"tokenReferenceId"**: string, **"customerCompanyID"**: string }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errorMessage"**: string }<br> |

### [POST] /vpc/v1/account/create
**Create Account**

Use this operation to register your existing cards with VPC, which is required before you can set any rules, other than the Block Rule (this will be available to add while creating the account). You can enroll both a physical or a Visa virtual card. While registering your card, you can specify phone numbers and email addresses to receive SMS and email transaction notifications.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"isBlock"**: boolean, **"isToken"**: boolean, **"contacts"**: [ { **"contact"**: string, **"countryCode"**: string, **"dialingCode"**: string, **"languageCode"**: string, **"notificationFormat"**: string, **"notificationChannel"**: string, <br>**Available values:** "EMAIL", "SMS", "BOTH", "NONE" } ], **"lastName"**: string, **"firstName"**: string, **"issuerBid"**: string, **"companyName"**: string, **"accountNumber"**: string, **"customerClientId"**: string, **"tokenReferenceId"**: string, **"customerCompanyId"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errorMessage"**: string }<br> |

### [DELETE] /vpc/v1/account/delete
**Delete Account**

Use this operation to remove account from VPC when they are no longer needed. Deleting an account will also remove all associated rules and notifications from VPC.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"issuerBid"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errorMessage"**: string }<br> |

### [PUT] /vpc/v1/account/update
**Update Account**

Use this operation to update your existing cards registered with VPC. You can modify any of the details that were provided during the initial account setup.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"isToken"**: boolean, **"contacts"**: [ { **"action"**: string, <br>**Available values:** "A", "D", **"contact"**: string, **"countryCode"**: string, **"dialingCode"**: string, **"languageCode"**: string, **"notificationFormat"**: string, **"notificationChannel"**: string, <br>**Available values:** "EMAIL", "SMS", "BOTH", "NONE" } ], **"lastName"**: string, <br>**Default:** LNU, **"firstName"**: string, <br>**Default:** FNU, **"issuerBid"**: string, **"accountNumber"**: string, **"tokenReferenceId"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errorMessage"**: string }<br> |

---
## Account Administration - Deprecated
Users can use the Account Administration APIs to add their accounts in VPC and manage them. It allows an entity to create an account, update account details, delete an account, and retrieve account summary and details.<br><br><b>Response code and description</b>: Refer to <a href=/capabilities/visa-b2b-payment-controls/docs-error-codes>Response code and description.</a>

### [POST] /vpc/v1/accountAdministration/get
**Get Account Details**

Users can use Get Account API to fetch all the details about an account, number of controls and contacts enabled on an account.

#### Request Body

Users can use Get Account API to fetch all the details about an account, number of controls and contacts enabled on an account.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**text/json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/*+json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"companyId"**: string, **"accountStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"statusMessage"**: string, **"accountDetails"**: { **"expYear"**: string, **"isToken"**: boolean, **"expMonth"**: string, **"isBlocked"**: boolean, **"ruleCount"**: string, **"accountLast4"**: string, **"emailContactCount"**: string, **"cardholderLastName"**: string, **"isControlSuspended"**: boolean, **"mobileContactCount"**: string, **"cardholderFirstName"**: string }, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 207 | Mutli-status responses. This response is seen in case of bulk request scenario. For this response, go through each response to get the status of each account. | **application/json**: { **"data"**: { **"companyId"**: string, **"accountStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"statusMessage"**: string, **"accountDetails"**: { **"expYear"**: string, **"isToken"**: boolean, **"expMonth"**: string, **"isBlocked"**: boolean, **"ruleCount"**: string, **"accountLast4"**: string, **"emailContactCount"**: string, **"cardholderLastName"**: string, **"isControlSuspended"**: boolean, **"mobileContactCount"**: string, **"cardholderFirstName"**: string }, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [PUT] /vpc/v1/accountAdministration/update
**Update Account**

Users can use the Update Account API to update the account data which includes the first name, last name and expiration date. This API also allows user to update the block status and enable/disable controls on an account.

#### Request Body

Users can use the Update Account API to update the account data which includes the first name, last name and expiration date. This API also allows user to update the block status and enable/disable controls on an account.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"expYear"**: string, **"clientId"**: string, **"expMonth"**: string, **"companyId"**: string, **"isBlocked"**: boolean, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string, **"cardholderLastName"**: string, **"isControlSuspended"**: boolean, **"cardholderFirstName"**: string }<br>**application/json**: { **"expYear"**: string, **"clientId"**: string, **"expMonth"**: string, **"companyId"**: string, **"isBlocked"**: boolean, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string, **"cardholderLastName"**: string, **"isControlSuspended"**: boolean, **"cardholderFirstName"**: string }<br>**text/json**: { **"expYear"**: string, **"clientId"**: string, **"expMonth"**: string, **"companyId"**: string, **"isBlocked"**: boolean, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string, **"cardholderLastName"**: string, **"isControlSuspended"**: boolean, **"cardholderFirstName"**: string }<br>**application/*+json**: { **"expYear"**: string, **"clientId"**: string, **"expMonth"**: string, **"companyId"**: string, **"isBlocked"**: boolean, **"issuerBid"**: string, **"requestID"**: string, **"serviceKey"**: string, **"accountNumber"**: string, **"cardholderLastName"**: string, **"isControlSuspended"**: boolean, **"cardholderFirstName"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"accountStatus"**: { **"serviceKey"**: string, **"accountLast4"**: string } }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [POST] /vpc/v1/accountAdministration/create
**Create Account**

The Create Account API allows the user to add an account to a company within VPC. After an account is added, user can then add controls and contacts to leverage full API capabilities. Accounts can be added individually or can be added in bulk through this API. User will receive back the service key per account to use in subsequent calls. User can also add an account with blocked status to restrict the account usage. <br><br><b>Note</b>: Bulk capability is limited to 250 accounts per call.

#### Request Body

The Create Account API allows the user to add an account to a company within VPC. After an account is added, user can then add controls and contacts to leverage full API capabilities. Accounts can be added individually or can be added in bulk through this API. User will receive back the service key per account to use in subsequent calls. User can also add an account with blocked status to restrict the account usage. <br><br><b>Note</b>: Bulk capability is limited to 250 accounts per call.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"accounts"**: [ { **"cvv"**: string, **"expYear"**: string, **"isToken"**: boolean, **"expMonth"**: string, **"isBlocked"**: boolean, **"accountNumber"**: string, **"sequenceNumber"**: string, **"cardholderLastName"**: string, **"cardholderFirstName"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/json**: { **"accounts"**: [ { **"cvv"**: string, **"expYear"**: string, **"isToken"**: boolean, **"expMonth"**: string, **"isBlocked"**: boolean, **"accountNumber"**: string, **"sequenceNumber"**: string, **"cardholderLastName"**: string, **"cardholderFirstName"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**text/json**: { **"accounts"**: [ { **"cvv"**: string, **"expYear"**: string, **"isToken"**: boolean, **"expMonth"**: string, **"isBlocked"**: boolean, **"accountNumber"**: string, **"sequenceNumber"**: string, **"cardholderLastName"**: string, **"cardholderFirstName"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/*+json**: { **"accounts"**: [ { **"cvv"**: string, **"expYear"**: string, **"isToken"**: boolean, **"expMonth"**: string, **"isBlocked"**: boolean, **"accountNumber"**: string, **"sequenceNumber"**: string, **"cardholderLastName"**: string, **"cardholderFirstName"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"accountsStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 207 | Mutli-status responses. This response is seen in case of bulk request scenario. For this response, go through each response to get the status of each account. | **application/json**: { **"data"**: { **"accountsStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [DELETE] /vpc/v1/accountAdministration/delete
**Delete Account**

Users can use Delete Account API to remove the account from Visa Payment Controls. This will also remove all the existing controls on an account making it open for all transactions.

#### Request Body

Users can use Delete Account API to remove the account from Visa Payment Controls. This will also remove all the existing controls on an account making it open for all transactions.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**text/json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br>**application/*+json**: { **"accounts"**: [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ], **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"data"**: { **"accountsStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 207 | Mutli-status responses. This response is seen in case of bulk request scenario. For this response, go through each response to get the status of each account. | **application/json**: { **"data"**: { **"accountsStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

---
## Intelligent Payment Controls
These APIs enables users to generate, validate, and set business rules using a conversational AI service integrated with various backend modules. The flow supports iterative modification and validation, ensuring that the rules meet business requirements before being finalized and se

### [POST] /vpc/v1/vpcgenai/get
**Get Rule Suggestions**

The users can generate card control rules based on a user's use case provided in plain (natural language) text.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"prompt"**: string, **"contextId"**: string, **"issuerBid"**: string, **"vpcClientId"**: string, **"accountNumber"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"message"**: string, **"requestId"**: string, **"ruleSetId"**: string, **"actionRequired"**: string, **"setRulesRequest"**: { **"rules"**: [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ], **"endDate"**: string, **"timezone"**: string, <br>**Default:** GMT Standard Time, **"startDate"**: string, **"ruleCurrency"**: string, **"mcgRuleAction"**: string, <br>**Available values:** "ALLOW", "BLOCK" }, **"validationErrors"**: { **"errorCode"**: string, **"errorMessage"**: string } }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errorMessage"**: string }<br> |

### [POST] /vpc/v1/vpcgenai/setSuggestedRules
**Set Suggested Modified Rules**

The Set Suggested Rules is used to set the controls generated by AI and use ruleSetId generated in Get Rule Suggestions API

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"modified"**: boolean, **"contextId"**: string, **"issuerBid"**: string, **"ruleSetId"**: string, **"vpcClientId"**: string, **"accountNumber"**: string, **"setModifiedRules"**: { **"rules"**: [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ], **"endDate"**: string, **"timezone"**: string, <br>**Default:** GMT Standard Time, **"startDate"**: string, **"ruleCurrency"**: string, **"accountNumber"**: string, **"mcgRuleAction"**: string, <br>**Available values:** "ALLOW", "BLOCK", **"tokenReferenceId"**: string } }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"modifiedRulesSuccessResponse"**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string } }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errorMessage"**: string }<br> |

---
## Report Management
The Report Management APIs allows user to retrieve both declined transactions and approved transactions (for Spend Velocity and Exact Match rules only) details and also shows the notifications sent out for each transaction. 

### [POST] /vpc/v1/report/get-transaction-history
**Get Transaction History**

The Get Transaction History API allows users to retrieve all the decline and approved (SPV and Exact match only) transaction history based on the specified date range up to last 27 months. 
 
Pagination is supported by this API using the "isLastDataSet" field in the response. When the field "isLastDataSet" value is "False" in the response, the field "pageNumber" can be updated to get the subsequent data set.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"endDate"**: string, **"issuerBid"**: string, **"startDate"**: string, **"pageNumber"**: integer, <br>**Default:** 1, **"accountNumber"**: string, **"maxRecordsToReturn"**: integer, <br>**Default:** 250 }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Successful Response | **application/json**: { **"data"**: { **"transactions"**: [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"cardAcceptorId"**: string, **"triggerTypeCode"**: [ string ], **"triggerTypeText"**: [ string ], **"merchantLocation"**: string, **"transactionAmount"**: string, **"transactionTimeStamp"**: string } ], **"isLastDataSet"**: boolean }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errorMessage"**: string }<br> |

### [POST] /vpc/v1/report/get-notification-history
**Get Notification History**

The Get Notification History API allows users to retrieve notification history and message details based on the specified date range for all declined transactions and specific approved transaction for Spend Velocity and Exact match rules up to last 27 months. 
 
Pagination is supported by this API using the "isLastDataSet" field in the response. When the field "isLastDataSet" value is "False" in the response, the field "pageNumber" can be updated to get the subsequent data set. 
 
**Note**: Notifications must be enabled to get the notification history.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"endDate"**: string, **"issuerBid"**: string, **"startDate"**: string, **"pageNumber"**: integer, <br>**Default:** 1, **"accountNumber"**: string, **"maxRecordsToReturn"**: integer, <br>**Default:** 250 }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Successful Response | **application/json**: { **"data"**: { **"isLastDataSet"**: boolean, **"notifications"**: [ { **"messages"**: [ { **"contactType"**: string, **"messageText"**: string } ], **"transaction"**: [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"cardAcceptorId"**: string, **"triggerTypeCode"**: [ string ], **"triggerTypeText"**: [ string ], **"merchantLocation"**: string, **"transactionAmount"**: string, **"transactionTimeStamp"**: string } ], **"contactStatus"**: [ { **"isHTML"**: boolean, **"contact"**: string, **"contactType"**: string, **"countryCode"**: string, **"languageCode"**: string } ] } ] }, **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |
| 400 | Bad Request | **application/json**: { **"errorCode"**: string, **"requestId"**: string, **"errorMessage"**: string }<br> |

---
## Commercial Directory
The Commercial Directory Service enables financial institutions to manage user-to-account mappings for commercial card programs using an asynchronous model. When a client submits a request, the service returns a 202 Accepted status with a unique requestId for tracking. The request is then processed in the background, with results delivered via a callback URL or retrieved by polling a status endpoint with the requestId. For efficiency, the API supports batch operations of up to 250 records. Storing the requestId is critical for tracking the outcome. Upon successful creation, each mapping is assigned a unique userMappingId. This userMappingId is essential for all subsequent lifecycle operations—such as updates, deletions, and queries—and is also the key used to initiate authentication for that specific mapping.

### [POST] /vca/v1/user-mappings/bulk-query
**Get User Mapping**

Submit a request to retrieve multiple user mappings by their IDs. Service validates request, returns immediate acknowledgement, and retrieves mappings asynchronously. Maximum 250 IDs per request. Returns full mapping details with masked account numbers. Following the API's asynchronous pattern, the results of the get operation will be delivered to your callback URL or can be retrieved by polling the status endpoint using a request Id.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"clientId"**: string, **"issuerBid"**: string, **"userMappingIds"**: [ string (uuid) ], **"callbackRequired"**: boolean }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | Accepted | **application/json**: { **"status"**: string, <br>**Available values:** "ACCEPTED", **"requestId"**: string (uuid) }<br> |
| 400 | Bad Request - Validation errors or database validation failures | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |
| 500 | Internal Server Error | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |

#### Callback: processingComplete

##### [POST] `{$pre-configured-fintech-callback-url}`
**Query results notification**

Callback with full details of retrieved user mappings

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"requestId"**: string (uuid), **"userMappingResults"**: [ { **"status"**: string, <br>**Available values:** "success", **"userId"**: string, **"account"**: string, **"endDate"**: dateTime, **"clientId"**: string, **"timezone"**: string, **"companyId"**: string, **"issuerBid"**: string, **"statusCode"**: string, **"accountType"**: string, <br>**Available values:** "PLASTIC", "VIRTUAL", "TOKEN", "FUNDING", "PAN", **"accountPoolId"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid), **"authenticationMethod"**: string, <br>**Available values:** "OTP", "BIOMETRIC" } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] }<br> |

#### Responses

| Code | Description |
| ---- | ----------- |
| 200 | OK |

### [POST] /vca/v1/user-mappings/bulk-delete
**Delete User Mapping**

Submit a request to delete multiple user mappings. The operation performs a logical "soft delete," marking the specified mappings as inactive rather than permanently removing them from the system. You can include a maximum of 250 userMappingIds in a single request. Please note that only active mappings are eligible for deletion, and once a mapping is deleted, it cannot be reactivated. Following the API's asynchronous pattern, the results of the delete operation will be delivered to your callback URL or can be retrieved by polling the status endpoint using a request Id. Deleting a mapping will cause all subsequent authentication attempts for the associated account to fail until a new, active mapping is created for it.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"clientId"**: string, **"issuerBid"**: string, **"userMappingIds"**: [ string (uuid) ], **"callbackRequired"**: boolean }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | Accepted | **application/json**: { **"status"**: string, <br>**Available values:** "ACCEPTED", **"requestId"**: string (uuid) }<br> |
| 400 | Bad Request - Validation errors or database validation failures | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |
| 500 | Internal Server Error | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |

#### Callback: processingComplete

##### [POST] `{$pre-configured-fintech-callback-url}`
**Delete results notification**

Callback with results of delete operations

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"requestId"**: string (uuid), **"userMappingResults"**: [ { **"status"**: string, <br>**Available values:** "success", **"statusCode"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] }<br> |

#### Responses

| Code | Description |
| ---- | ----------- |
| 200 | OK |

### [POST] /vca/v1/user-mappings/status
**Get Request Status**

Poll for status and detailed results of a previously submitted request using the requestId from acknowledgement response. Returns 200 OK with results when processing is complete. Response schema varies by original request type. Results include success or failure status for each record in the batch.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"clientId"**: string, **"issuerBid"**: string, **"requestId"**: string (uuid) }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: { **"requestId"**: string (uuid), **"userMappingResults"**: [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] } or { **"requestId"**: string (uuid), **"userMappingResults"**: [ { **"status"**: string, <br>**Available values:** "success", **"userId"**: string, **"account"**: string, **"endDate"**: dateTime, **"clientId"**: string, **"timezone"**: string, **"companyId"**: string, **"issuerBid"**: string, **"statusCode"**: string, **"accountType"**: string, <br>**Available values:** "PLASTIC", "VIRTUAL", "TOKEN", "FUNDING", "PAN", **"accountPoolId"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid), **"authenticationMethod"**: string, <br>**Available values:** "OTP", "BIOMETRIC" } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] } or { **"requestId"**: string (uuid), **"userMappingResults"**: [ { **"status"**: string, <br>**Available values:** "success", **"statusCode"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] } or { **"requestId"**: string (uuid), **"userMappingResults"**: [ { **"status"**: string, <br>**Available values:** "success", **"statusCode"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] }<br> |
| 400 | Bad Request - Validation errors or database validation failures | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |
| 500 | Internal Server Error | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |

### [POST] /vca/v1/user-mappings/bulk-create
**Create User Mapping**

Submit a request to create multiple user-to-account mappings. Service validates request, returns immediate acknowledgement with requestId, and processes mappings asynchronously. Maximum 250 mappings per request. Each account can only be mapped to one user at a time. Following the API's asynchronous pattern, the results of the create operation will be delivered to your callback URL or can be retrieved by polling the status endpoint using a request Id.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"clientId"**: string, **"issuerBid"**: string, **"userMappings"**: [ { **"userId"**: string, **"account"**: string, **"endDate"**: date, **"sequence"**: string, **"timezone"**: string, **"companyId"**: string, **"accountType"**: string, <br>**Available values:** "PLASTIC", "VIRTUAL", "TOKEN", "FUNDING", "PAN", **"accountPoolId"**: string, **"authenticationMethod"**: string, <br>**Available values:** "OTP", "BIOMETRIC" } ], **"callbackRequired"**: boolean }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | Accepted | **application/json**: { **"status"**: string, <br>**Available values:** "ACCEPTED", **"requestId"**: string (uuid) }<br> |
| 400 | Bad Request | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |
| 500 | Internal Server Error | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |

#### Callback: processingComplete

##### [POST] `{$pre-configured-fintech-callback-url}`
**Processing completion notification**

Callback sent to the client-provided URL when request processing is complete. 
Contains detailed results for each user mapping in the batch.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"requestId"**: string (uuid), **"userMappingResults"**: [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] }<br> |

#### Responses

| Code | Description |
| ---- | ----------- |
| 200 | OK |

### [PUT] /vca/v1/user-mappings/bulk-update
**Update User Mapping**

Submit a request to update multiple user mappings. Only specified fields are updated, unspecified fields retain current values. Updatable fields are authenticationMethod, endDate, and timezone. Maximum 250 updates per request. User mapping ID must exist and be active. Following the API's asynchronous pattern, the results of the update operation will be delivered to your callback URL or can be retrieved by polling the status endpoint using a request Id.

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"clientId"**: string, **"issuerBid"**: string, **"userMappings"**: [ { **"endDate"**: date, **"timezone"**: string, **"userMappingId"**: string (uuid), **"authenticationMethod"**: string, <br>**Available values:** "OTP", "BIOMETRIC" } ], **"callbackRequired"**: boolean }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | Accepted | **application/json**: { **"status"**: string, <br>**Available values:** "ACCEPTED", **"requestId"**: string (uuid) }<br> |
| 400 | Bad Request - Validation errors or database validation failures | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |
| 500 | Internal Server Error | **application/json**: { **"error"**: { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } }<br> |

#### Callback: processingComplete

##### [POST] `{$pre-configured-fintech-callback-url}`
**Update results notification**

Callback with results of update operations

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"requestId"**: string (uuid), **"userMappingResults"**: [ { **"status"**: string, <br>**Available values:** "success", **"statusCode"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] }<br> |

#### Responses

| Code | Description |
| ---- | ----------- |
| 200 | OK |

---
## Report Management - Deprecated
The Report Management APIs allows user to retrieve both declined transactions and approved transactions (for Spend Velocity and Exact Match rules only) details and also shows the notifications sent out for each transaction.<br><br><b>Response code and description</b>: Refer to <a href=/capabilities/visa-b2b-payment-controls/docs-error-codes>Response code and description.</a>

### [POST] /vpc/v1/reportManagement/transactionHistory/get
**Get Transaction History**

The Get Transaction History API allows users to retrieve all the decline and approved (SPV and Exact match only) transaction history based on the specified date range up to last 27 months.<br><br>Pagination is supported by this API using the ‘isLastData’ field in the response. When the field ‘isLastData’ value is ‘False’ in the response, the field ‘pageNumber’ can be updated to get the subsequent data set.

#### Request Body

The Get Transaction History API allows users to retrieve all the decline and approved (SPV and Exact match only) transaction history based on the specified date range up to last 27 months.<br><br>Pagination is supported by this API using the ‘isLastData’ field in the response. When the field ‘isLastData’ value is ‘False’ in the response, the field ‘pageNumber’ can be updated to get the subsequent data set.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"endDate"**: string, **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"startDate"**: string, **"pageNumber"**: string (int32), **"serviceKey"**: string, **"accountNumber"**: string, **"maxRecordsToReturn"**: string (int32) }<br>**application/json**: { **"endDate"**: string, **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"startDate"**: string, **"pageNumber"**: string (int32), **"serviceKey"**: string, **"accountNumber"**: string, **"maxRecordsToReturn"**: string (int32) }<br>**text/json**: { **"endDate"**: string, **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"startDate"**: string, **"pageNumber"**: string (int32), **"serviceKey"**: string, **"accountNumber"**: string, **"maxRecordsToReturn"**: string (int32) }<br>**application/*+json**: { **"endDate"**: string, **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"startDate"**: string, **"pageNumber"**: string (int32), **"serviceKey"**: string, **"accountNumber"**: string, **"maxRecordsToReturn"**: string (int32) }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"serviceKey"**: string, **"messageCode"**: string, **"accountLast4"**: string, **"transactions"**: [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"triggerTypeCode"**: string, **"triggerTypeText"**: string, **"merchantLocation"**: string, **"transactionAmount"**: string, **"merchantCountryCode"**: string, **"transactionTimeStamp"**: string } ], **"isLastDataSet"**: boolean }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

### [POST] /vpc/v1/reportManagement/notificationHistory/get
**Get Notification History**

The Get Notification History API allows users to retrieve notification history and  message details based on the specified date range for all declined transactions and specific approved transaction for Spend Velocity and Exact match rules up to last 27 months.<br><br>Pagination is supported by this API using the ‘isLastData’ field in the response. When the field ‘isLastData’ value is ‘False’ in the response, the field ‘pageNumber’ can be updated to get the subsequent data set.<br><br><b>Note</b>: Notifications must be enabled to get the notification history.

#### Request Body

The Get Notification History API allows users to retrieve notification history and  message details based on the specified date range for all declined transactions and specific approved transaction for Spend Velocity and Exact match rules up to last 27 months.<br><br>Pagination is supported by this API using the ‘isLastData’ field in the response. When the field ‘isLastData’ value is ‘False’ in the response, the field ‘pageNumber’ can be updated to get the subsequent data set.<br><br><b>Note</b>: Notifications must be enabled to get the notification history.

| Required | Schema |
| -------- | ------ |
|  No | **application/json-patch+json**: { **"endDate"**: string, **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"startDate"**: string, **"pageNumber"**: string (int32), **"serviceKey"**: string, **"accountNumber"**: string, **"maxRecordsToReturn"**: string (int32) }<br>**application/json**: { **"endDate"**: string, **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"startDate"**: string, **"pageNumber"**: string (int32), **"serviceKey"**: string, **"accountNumber"**: string, **"maxRecordsToReturn"**: string (int32) }<br>**text/json**: { **"endDate"**: string, **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"startDate"**: string, **"pageNumber"**: string (int32), **"serviceKey"**: string, **"accountNumber"**: string, **"maxRecordsToReturn"**: string (int32) }<br>**application/*+json**: { **"endDate"**: string, **"clientId"**: string, **"companyId"**: string, **"issuerBid"**: string, **"requestID"**: string, **"startDate"**: string, **"pageNumber"**: string (int32), **"serviceKey"**: string, **"accountNumber"**: string, **"maxRecordsToReturn"**: string (int32) }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Success Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"serviceKey"**: string, **"messageCode"**: string, **"accountLast4"**: string, **"isLastDataSet"**: boolean, **"notifications"**: [ { **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ], **"messages"**: { **"message"**: [ { **"contactType"**: string, **"messageText"**: string } ], **"notificationTimeStamp"**: string }, **"transaction"**: [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"triggerTypeCode"**: string, **"triggerTypeText"**: string, **"merchantLocation"**: string, **"transactionAmount"**: string, **"merchantCountryCode"**: string, **"transactionTimeStamp"**: string } ] } ] }<br> |
| 400 | Error Response | **application/json**: { **"message"**: string, **"requestId"**: string, **"messageCode"**: string }<br> |

---
### Webhooks

### [POST] /v1/Push-biometric-result
**Push biometric result**

Visa Commercial’s Virtual Card Authentication service will forward the biometric authentication result received from the Fintech to ACS provider, enabling them to continue the authentication process.

### [POST] /v1/Push-user-mapping-response
**Push user-mapping response**

Visa Commercial’s Virtual Card Authentication service will transmit the responses for user-mapping operations (create, read, update, and delete) for API calls in which the callback option has been enabled.

### [POST] /v1/Push-authentication-request
**Push authentication request**

Visa Commercial’s Virtual Card Authentication service transmits the authentication request to the Fintech, enabling them to initiate the authentication workflow with the end user through either one-time-password (OTP) verification or biometric authentication.

---
### Schemas

#### RulesErrorResponse-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorCode | string | Error code indicating the status of the request (Application specific code). | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| errorMessage | string | Error message describing the request processing status. This message is mapped with the errorCode. | Yes |

#### GetTransactionHistoryRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| endDate | string | Expected format: MM/DD/YYYY     End date of the date range within which the transactions need to be fetched.     Note: End date must be grater than start date <br>*Example:* `"01/31/2023"` | No |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| startDate | string | Start date of the date range within which the transactions need to be fetched.   Expected format: MM/DD/YYYY <br>*Example:* `"01/01/2023"` | Yes |
| pageNumber | integer, <br>**Default:** 1 | Used for pagination to fetch subsequent next set of records. | No |
| accountNumber | string | 16 digit account number to be added.   Regex: ^[4]{1}[0-9]{15}$  | Yes |
| maxRecordsToReturn | integer, <br>**Default:** 250 | Specifies maximum records to be returned in the response.  | No |

#### EMVPaymentToken Schema

Data provided with the authentication indicating the card number was tokenized

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Version | string | Version number of the token message extension<br>*Example:* `"1.0"` | No |
| TokenRequestorId | string | Token Requestor ID<br>*Example:* `"12345678901"` | No |
| TokenAdditionalData | { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string } |  | No |
| TokenStatusIndicator | string | Token status indicator. Values include: Active, Inactive, Suspended<br>*Example:* `"Active"` | No |

#### ContactModel-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| isHTML | boolean | Indicates the format of the text in the email body is HTML. Else, it will be text. <br><br>Note: Include only if the 'contactType' field is 'Email'. | No |
| contactType | string | Expected value: Email/Mobile.<br><br>Type of the contact (Email/Mobile). | Yes |
| countryCode | string | Expected value: Dialing code.<br>Example: 1 for USA and Canada. <br><br>Country code for the mobile number. <br><br>Note: Include only if the 'contactType' field is 'Mobile'. | No |
| contactValue | string | Either the email address or the mobile number. | Yes |
| languageCode | string | Specifies the language of the notification text. Refer to <a href="docs-master-codes#section0">Response code and description</a> for supported languages and their codes. | Yes |
| sequenceNumber | string | Expected value: A number in the range 0-249. Must start from 0 following other numbers in ascending order.<br><br>This value is used to map the response to the corresponding account in the request. | Yes |

#### VelocityDetails Schema

Spend Velocity Detais only needed if rule code is SPV

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| maxAuth | string | Maximum number of authorizations allowed in the period. | No |
| rangeType | string | Type of period (e.g., DAILY). | No |
| updateFlag | string | Update flag (e.g., REPLACE). | No |
| notifyOption | string | Notification option (e.g., ONCE). | No |
| thresholdAmount | string | Threshold amount for notifications. | No |
| spendLimitAmount | string | Total spend limit amount. | No |
| consumedAuthCount | integer | Number of consumed authorizations. | No |
| consumedAuthAmount | integer | Amount consumed. | No |

#### Validate Schema

An object containing the ReasonCode for Validate

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ReasonCode | string | Used by the issuer for informational purposes<br>*Example:* `"VAL001"` | No |
| ReasonDescription | string | Used by the issuer for informational purposes<br>*Example:* `"Validation completed successfully"` | No |

#### SetAccountControlsSuccessResponse-1 Schema

Response for setting controls on accounts.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"accountsStatus"**: [ { **"status"**: string, **"ruleCount"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } | Response data for Set Controls. | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### GetNotificationData Schema

Notification data for Get Notification History API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| contacts | [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ] |  | No |
| messages | { **"message"**: [ { **"contactType"**: string, **"messageText"**: string } ], **"notificationTimeStamp"**: string } |  | No |
| transaction | [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"triggerTypeCode"**: string, **"triggerTypeText"**: string, **"merchantLocation"**: string, **"transactionAmount"**: string, **"merchantCountryCode"**: string, **"transactionTimeStamp"**: string } ] |  | No |

#### ErrorResponse-11 Schema

Error response for Report Management APIs.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identified sent in the request | Yes |
| messageCode | string | Message code showing the status of the request (Application specific code). | Yes |

#### DeleteContactData Schema

Account response data for Delete Contact API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| contactsStatus | [ { **"status"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] |  | Yes |

#### DeleteAccountSuccessResponse Schema

Response for Delete Company API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"accountsStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } |  | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### ErrorResponse-10 Schema

Wrapper object for error responses. This is the actual response body returned by the API for 400 and 500 errors.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| error | { **"code"**: string, **"details"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"message"**: string, **"requestId"**: string (uuid) } | Error payload containing detailed error information. This object is wrapped in the 'error' property of ErrorResponse. | Yes |

#### UpdateSupplierRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| buyerId | string | Buyer identifier. 1-50 alphanumeric characters.<br>*Example:* `"BUYER0001"` | Yes |
| clientId | string | Client ID provided by Visa during onboarding. Must match the `clientId` header.<br>*Example:* `"Fintech_0001"` | Yes |
| issuerBid | string | Issuer BID. Must be exactly 8 digits.<br>*Example:* `"10000130"` | Yes |
| requestId | string | Unique request identifier (UUID or 1-50 alphanumeric with hyphens/underscores).<br>*Example:* `"b2b9bee2-4de6-5917-bd13-c8ff81bde4e3"` | Yes |
| buyerSupplierId | string | Buyer-supplier relationship identifier. 1-50 alphanumeric characters.<br>*Example:* `"BUYER0001SP001"` | Yes |
| supplierValidationStatusInd | string, <br>**Available values:** "false" | Validation status indicator. Only `"false"` is accepted — this operation untrusts the supplier. Passing any other value returns `SV-ERR-4021`. <br>*Enum:* `"false"`<br>*Example:* `"false"` | Yes |

#### PaymentInfo Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CardType | string, <br>**Available values:** "Credit", "Debit", "Not Applicable" | Card or account type<br>*Enum:* `"Credit"`, `"Debit"`, `"Not Applicable"`<br>*Example:* `"Credit"` | No |
| CardNumber | string | 16-digit card number<br>*Example:* `"4000000000000000"` | No |
| CardExpiryYear | string | Card expiry year (2 digits, e.g. 25)<br>*Example:* `"25"` | No |
| CardHolderName | string | Cardholder name<br>*Example:* `"John Doe"` | No |
| CardExpiryMonth | string | Card expiry month (01-12)<br>*Example:* `"12"` | No |

#### GetNotificationHistoryRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| GetNotificationHistoryRequest | { **"endDate"**: string, **"issuerBid"**: string, **"startDate"**: string, **"pageNumber"**: integer, <br>**Default:** 1, **"accountNumber"**: string, **"maxRecordsToReturn"**: integer, <br>**Default:** 250 } |  |  |

#### GetNotificationModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| endDate | string | Expected format: MM/DD/YYYY<br>End date of the date range within which the transactions needs to be fetched. | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| startDate | string | Expected format: MM/DD/YYYY<br>Start date of the date range within which the transactions needs to be fetched. | Yes |
| pageNumber | string (int32) | Default value: 1 <br><br>Used for pagination to fetch subsequent next set of records. | No |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| maxRecordsToReturn | string (int32) | Default value: 250<br><br>Specifies maximum records to be returned in the response. | No |

#### GetUserMappingRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Client identifier assigned by Visa<br>*Example:* `"fintech_0001"` | Yes |
| issuerBid | string | Bank Identification Number. Must be exactly 8 digits.<br>*Example:* `"10000130"` | Yes |
| userMappingIds | [ string (uuid) ] | Array of user mapping IDs to retrieve. Maximum 250 IDs per request.<br>*Example:* `["ee355a5b-3ea1-4a83-ac7c-2112c3d41560","7608f55d-10d7-4200-a727-9a4c0333bb98"]` | Yes |
| callbackRequired | boolean | Indicates whether a callback should be sent to the pre-configured callback URL for this clientId upon processing completion.<br>*Example:* `true` | No |

#### DeleteControlData-1 Schema

Response data for Set Controls.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accountsStatus | [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] |  | Yes |

#### SetAccountControlsModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"rule"**: object } ] |  | Yes |
| accounts | [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| ruleCurrency | string | ISO numeric currency code to be applied for all amount rules. Refer to <a href=docs-master-codes#section2>Currency details</a> to find the list of supported currencies and their codes.<br><br>Note: This field is mandatory if any amount related rules are specified. | No |

#### DeleteRulesRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| accountNumber | string | 16 digit account number. | Yes |
| deleteFutureRules | boolean | Accepted values include "true"  and "false".     Either "deleteCurrentRules" or "deleteFutureRules" need to be marked as "true"    Note: This value is required to indicate whether the future set of rules need to be deleted.  | Yes |
| deleteCurrentRules | boolean | Accepted values include "true"  and "false".     Either "deleteCurrentRules" or "deleteFutureRules" need to be marked as "true"         Note: This value is required to indicate whether the current set of rules need to be deleted.   | Yes |

#### RetrieveMerchantRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RetrieveMerchantRequest | { **"buyerId"**: string, **"issuerId"**: string, **"messageId"**: string, **"buyerSupplierId"**: string } & { **"includeUntrustedBinCaids"**: boolean } |  |  |

#### GetAccountDetailsSuccessResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"isToken"**: boolean, **"contacts"**: [ { **"contact"**: string, **"countryCode"**: string, **"dialingCode"**: string, **"languageCode"**: string, **"notificationFormat"**: string, **"notificationChannel"**: string, <br>**Available values:** "EMAIL", "SMS", "BOTH", "NONE" } ], **"lastName"**: string, <br>**Default:** LNU, **"firstName"**: string, <br>**Default:** FNU, **"accountKey"**: string, **"companyName"**: string, **"customerClientID"**: string, **"tokenReferenceId"**: string, **"customerCompanyID"**: string } |  | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### PolicyDetail Schema

Spend Policy Detais only needed if rule code is SPP

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rangeType | string |  | No |
| dayOfTheWeek | string |  | No |
| spendLimitAmount | string |  | No |
| merchantCategoryGroups | [ string ] |  | No |
| merchantCategoryRanges | [ { **"maxMCC"**: string, **"minMCC"**: string } ] |  | No |
| accumulatedSpendResetIndicator | string |  | No |

#### UpdateCompanyModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| newCompanyName | string | Updated name of the company which has already been enrolled. Only include if company name needs to be updated. | No |
| newContactEmail | string | Expected value: Email address. <br><br>Contact email address of the company owner/admin. Only include if company contact email address needs to be updated. | No |
| newContactPhone | string | Exepected value: Phone number with dialing code. <br><br>Contact phone number of the company owner/admin. Only include if company contact phone number needs to be updated. | No |

#### GetNotificationMessageData Schema

Notification message data for Get Notification History API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| contactType | string | Indicates the type of the contact (Email/Mobile) to which the notification was sent. | No |
| messageText | string | Message that was sent in the notification. | No |

#### GetContactData-1 Schema

Contact data for Get Notification History API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| isHTML | boolean | Indicates if the email notification sent was in HTML format. | No |
| contactType | string | Indicates the type of the contact (Email/Mobile) to which the notification was sent. | No |
| countryCode | string | Country code for mobile number to which the notification was sent. | No |
| contactValue | string | Contact value (email address/ mobile number) to which the notification was sent. | No |
| languageCode | string | Language in which the notification was sent. | No |

#### SetSuggestedModifiedRulesRequest-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| modified | boolean | Accepted values include "true" and "false". This flag indicates if modified is true then setModifiedRules is required. | No |
| contextId | string | Unique Context ID (Per Session). A unique context ID must be provided for each session. Once a context ID is used and the context is changed, the memory associated with that session is cleared. The same context ID cannot be reused for future sessions. | Yes |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| ruleSetId | string | ruleSetId generated in get-rule-suggestions API | Yes |
| vpcClientId | string | VPC generated client identifier for VPC clients | Yes |
| accountNumber | string | 16 digit account number. | Yes |
| setModifiedRules | { **"rules"**: [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ], **"endDate"**: string, **"timezone"**: string, <br>**Default:** GMT Standard Time, **"startDate"**: string, **"ruleCurrency"**: string, **"accountNumber"**: string, **"mcgRuleAction"**: string, <br>**Available values:** "ALLOW", "BLOCK", **"tokenReferenceId"**: string } |  | No |

#### GetRulesRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| accountNumber | string | 16 digit account number. | Yes |

#### TrustedMerchantResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| messageId | string | Unique identifier which was sent in the request | No |
| statusCode | string | Status code of the response | No |
| contactInfo | { **"city"**: string, **"state"**: string, **"zipCode"**: string, **"countryCode"**: string, **"addressLine1"**: string, **"addressLine2"**: string, **"addressLine3"**: string, **"supplierName"**: string } |  | No |
| statusDescription | string | Status description of the response | No |
| merchantBinCaidMatchDetail | [ { **"caid"**: string, **"acquirerBin"**: string } ] | Details of supplier BIN and CAID matches | No |
| acquirerBinCAIDAlreadyTrusted | boolean | Indicates if the acquirer BIN and CAID is already trusted | No |
| moreMatchesAvailableIndicator | boolean | Indicates if more matches are available | No |

#### UpdateAccountRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| isToken | boolean | Indicates if the account is Visa pseudo account. | Yes |
| contacts | [ { **"action"**: string, <br>**Available values:** "A", "D", **"contact"**: string, **"countryCode"**: string, **"dialingCode"**: string, **"languageCode"**: string, **"notificationFormat"**: string, **"notificationChannel"**: string, <br>**Available values:** "EMAIL", "SMS", "BOTH", "NONE" } ] |  | No |
| lastName | string, <br>**Default:** LNU | Alphanumeric string between 1 and 100 characters.    This is cardholder's last name. If not provided, will default to "LNU". | No |
| firstName | string, <br>**Default:** FNU | Alphanumeric string between 1 and 100 characters.     This is cardholder's first name. If not provided, will default to "FNU".  | No |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| accountNumber | string | 16 digit account number. | Yes |
| tokenReferenceId | string | Alphanumeric and required if the account type is token.     This is internally used to associate Visa Virtual Accounts. Not applicable for integrating directly through VDP. | No |

#### ConsumerInfo Schema

An object containing additional consumer information

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| WorkNumber | string | Consumer's work number. Phone number will follow E.164 format<br>*Example:* `"+14155559999"` | No |
| PhoneNumber | string | Phone Number for the consumer. Phone number will follow E.164 format<br>*Example:* `"+14155551234"` | No |
| EmailAddress | string | Email address for the consumer<br>*Example:* `"john.smith@example.com"` | No |
| MobileNumber | string | Consumer's mobile number. Phone number will follow E.164 format<br>*Example:* `"+14155555678"` | No |

#### CreateUserMappingRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Client identifier assigned by Visa. Must start with an alphanumeric character and can  contain alphanumeric characters, dots, ampersands, exclamation marks, commas, or hyphens. <br>*Example:* `"fintech_0001"` | Yes |
| issuerBid | string | Bank Identification Number (BIN) of the issuing institution. Must be exactly 8 digits. <br>*Example:* `"10000130"` | Yes |
| userMappings | [ { **"userId"**: string, **"account"**: string, **"endDate"**: date, **"sequence"**: string, **"timezone"**: string, **"companyId"**: string, **"accountType"**: string, <br>**Available values:** "PLASTIC", "VIRTUAL", "TOKEN", "FUNDING", "PAN", **"accountPoolId"**: string, **"authenticationMethod"**: string, <br>**Available values:** "OTP", "BIOMETRIC" } ] | Array of user mappings to create. Maximum 250 mappings per request. Each mapping must  have a unique sequence number within the request.  | Yes |
| callbackRequired | boolean | Indicates whether a callback should be sent to the pre-configured callback URL for this clientId upon processing completion.<br>*Example:* `true` | No |

#### AuthRecordPaymentInfo Schema

Payment information object containing cardholder payment details

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CardType | string, <br>**Available values:** "Credit", "Debit", "Not Applicable" | Card or account type e.g. Debit or Credit.<br>*Enum:* `"Credit"`, `"Debit"`, `"Not Applicable"`<br>*Example:* `"Credit"` | No |
| CardNumber | string | Payment card number used in transaction.<br>*Example:* `"4111XXXXXXXX1111"` | No |
| CardExpiryYear | string | Expiration year: For 3DS 1.0 Transactions this value is 4 digits; e.g. 2028. For EMV 3DS Transactions this value is 2 digits; e.g. 28<br>*Example:* `"28"` | No |
| CardHolderName | string | Name of cardholder.<br>*Example:* `"John Doe"` | No |
| CardExpiryMonth | string | Expiration month.<br>*Example:* `"12"` | No |

#### VisaPaymentTokenExtension Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Token | string | 16-digit Visa payment token (used as alternative to PaymentInfo.CardNumber)<br>*Example:* `"4000000000000000"` | No |
| Version | string | Version of the VisaPaymentToken extension schema<br>*Example:* `"1.0"` | No |
| TokenCryptogram | string | Cryptogram associated with the token for transaction authorization<br>*Example:* `"AAABBIIFmAAAAAAAAAAAAAA="` | No |
| TokenRequestorId | string | Unique identifier assigned to the token requestor by the token service provider<br>*Example:* `"12345678901"` | No |
| TokenAdditionalData | { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string } |  | No |
| TokenAssuranceMethod | string | Method used to assure the token identity<br>*Example:* `"01"` | No |
| TokenStatusIndicator | string, <br>**Available values:** "A", "I", "S", "D", "P" | Indicates the current status of the token. A=Active, I=Inactive, S=Suspended, D=Deleted, P=Pending<br>*Enum:* `"A"`, `"I"`, `"S"`, `"D"`, `"P"`<br>*Example:* `"A"` | No |
| TokenCryptogramValidityIndicator | string, <br>**Available values:** "01", "02", "03" | Indicates whether the token cryptogram is valid. 01=Valid, 02=Invalid, 03=Expired<br>*Enum:* `"01"`, `"02"`, `"03"`<br>*Example:* `"01"` | No |

#### UpdateMerchantRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| UpdateMerchantRequest | { **"buyerId"**: string, **"issuerId"**: string, **"messageId"**: string, **"buyerSupplierId"**: string } & { **"supplierTrustStatusInd"**: boolean, **"acquirerBinCaidMappings"**: [ { **"caid"**: string, **"acquirerBin"**: string } & { **"acquirerBinCaidTrustStatusInd"**: boolean } ] } |  |  |

#### AccountStatusData Schema

Response data for controls deletion.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| ruleCount | string | Count of the rule set on the account. | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding contact. This message is mapped with the statusMessageCode. | Yes |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific Status message code indicating the status of the corresponding contact. | Yes |

#### AccountControlData-2 Schema

Response data to fetch controls.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"rule"**: object } ] |  | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| ruleCurrency | string | ISO numeric currency code to be applied for all amount rules. Refer to <a href=docs-master-codes#section2>Currency details</a> to find the list of supported currencies and their codes.<br><br>Note: This field is mandatory if any amount related rules are specified. | No |

#### DisableEnableRulesRequest-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| blockRule | boolean | Accepted values include "true"  and "false".   This flag indicates if the account should be blocked. If set to ‘true’, then no transactions will be allowed on the account. | No |
| isDisable | boolean | Accepted values include "true"  and "false".   This flag indicates if all existing rules on the account should be disabled.  | Yes |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| accountNumber | string | 16 digit account number to be added. | Yes |

#### GetContactData Schema

Response data for Get Contact API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accountsContacts | [ { **"status"**: string, **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ], **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] |  | Yes |

#### AccountControlData-1 Schema

Response data to fetch controls.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"rule"**: object } ] |  | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| ruleCurrency | string | ISO numeric currency code to be applied for all amount rules. Refer to <a href=\\"/capabilities/visa-b2b-payment-controls/docs-master-codes\\">Currency details</a> to find the list of supported currencies and their codes.<br><br>Note: This field is mandatory if any amount related rules are specified. | No |
| mcgRuleAction | string | Indicating the status of mcgRuleAction parameter value. | No |

#### DeleteContactModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| contacts | [ { **"contactType"**: string, **"contactValue"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |

#### GetUserMappingErrorResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "error" | Processing status<br>*Enum:* `"error"`<br>*Example:* `"error"` | Yes |
| statusCode | string | Error status code<br>*Example:* `"VCMRS-CDS-ERR-4000"` | Yes |
| errorDetails | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Detailed error information | Yes |
| statusMessage | string | Error summary message<br>*Example:* `"Error processing user mapping record."` | Yes |
| userMappingId | string (uuid) | User mapping ID that was queried<br>*Example:* `"ee355a5b-3ea1-4a83-ac7c-2112c3d41560"` | Yes |

#### MerchantBinCaidDetail Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MerchantBinCaidDetail | { **"caid"**: string, **"acquirerBin"**: string } & { **"acquirerBinCaidTrustStatusInd"**: boolean } |  |  |

#### AccountData Schema

Account data in Get Account response.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| expYear | string | Expiration year of the account. | Yes |
| isToken | boolean | Indicates if the account is Visa pseudo account. | Yes |
| expMonth | string | Expiration month of the account. | Yes |
| isBlocked | boolean | Indicates if the account is in blocked state. | Yes |
| ruleCount | string | Count of the rules set on the account. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| emailContactCount | string | Count of the email contacts associated to the account for transaction notifications. | Yes |
| cardholderLastName | string | Cardholder’s last name. | Yes |
| isControlSuspended | boolean | Indicates if the controls on the account are suspended. | Yes |
| mobileContactCount | string | Count of the mobile contacts associated to the account for transaction notifications. | Yes |
| cardholderFirstName | string | Cardholder’s first name. | Yes |

#### GetControlsSuccessResponse-3 Schema

Response for setting controls on accounts.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"rules"**: [ { **"rule"**: object } ], **"serviceKey"**: string, **"accountLast4"**: string, **"ruleCurrency"**: string } | Response data to fetch controls. | No |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### GetControlsSuccessResponse-2 Schema

Response for setting controls on accounts.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"rules"**: [ { **"rule"**: object } ], **"serviceKey"**: string, **"accountLast4"**: string, **"ruleCurrency"**: string } | Response data to fetch controls. | No |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### GetControlsSuccessResponse-1 Schema

Response for setting controls on accounts.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"rules"**: [ { **"rule"**: object } ], **"serviceKey"**: string, **"accountLast4"**: string, **"ruleCurrency"**: string, **"mcgRuleAction"**: string } | Response data to fetch controls. | No |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### CreateContactStatus Schema

Response object showing creation status of each contact.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding contact. This message is mapped with the statusMessageCode. | Yes |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific Status message code indicating the status of the corresponding contact. | Yes |

#### Credential Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Id | string | Credential ID<br>*Example:* `"550e8400-e29b-41d4-a716-446655440004"` | No |
| Text | string | Display text for the credential<br>*Example:* `"SMS will be sent to your registered mobile number"` | No |
| Type | string, <br>**Available values:** "OTPEMAIL", "OTPSMS", "OTPIVR", "KBASINGLE", "BIOMETRIC", "OUTOFBANDOTHER", "OUTOFBANDTOKEN" | Credential type<br>*Enum:* `"OTPEMAIL"`, `"OTPSMS"`, `"OTPIVR"`, `"KBASINGLE"`, `"BIOMETRIC"`, `"OUTOFBANDOTHER"`, `"OUTOFBANDTOKEN"`<br>*Example:* `"OTPSMS"` | No |
| Token | string | Authentication token (conditional)<br>*Example:* `"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."` | No |
| CustomerId | string | Customer ID (required for behavioral biometrics)<br>*Example:* `"550e8400-e29b-41d4-a716-446655440003"` | No |

#### AuthRecordDAFExtension Schema

An AReq extension which indicates that the transaction is to be considered for DAF (Digital Authentication Framework) eligibility

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Version | string | Version of the DAF extension message<br>*Example:* `"1.0"` | No |
| DAFAdvice | string | DAF Advice. Provides advice from the VDS regarding the Authenticated Payment Credential status<br>*Example:* `"APPROVED"` | No |
| AuthPayCredStatus | string, <br>**Available values:** "Y", "N", "U", "B", "I" | Enables the communication of Authenticated Payment Credential Status between the VDS and the 3DS Server, and the VDS and the ACS. Values include: Y = Payment account is an Authenticated Payment Credential, N = Payment account is not an Authenticated Payment Credential, U = Unknown, B = Bypassed, I = Informational<br>*Enum:* `"Y"`, `"N"`, `"U"`, `"B"`, `"I"`<br>*Example:* `"Y"` | No |
| AuthPayProcessReqInd | string | Authentication Payment Process Request Indicator. Indicates whether the 3DS Requestor is requesting that the payment account be processed as an Authenticated Payment Credential<br>*Example:* `"Y"` | No |

#### RetrieveSupplierRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| caid | string | Card Acceptor ID associated with the supplier. 1-15 alphanumeric characters.<br>*Example:* `"SUPPLIER001234"` | Yes |
| buyerId | string | Buyer identifier. 1-50 alphanumeric characters.<br>*Example:* `"BUYER0001"` | Yes |
| clientId | string | Client ID provided by Visa during onboarding. Must match the `clientId` header.<br>*Example:* `"Fintech_0001"` | Yes |
| issuerBid | string | Issuer BID. Must be exactly 8 digits.<br>*Example:* `"10000130"` | Yes |
| requestId | string | Unique request identifier (UUID or 1-50 alphanumeric with hyphens/underscores).<br>*Example:* `"a1a8aee1-3cd5-4806-ac02-b7ee70acd3d2"` | Yes |
| acquirerBin | string | Acquirer BIN associated with the supplier. 6-8 digits.<br>*Example:* `"420601"` | Yes |
| transactionId | string | Optional transaction identifier for correlation. Only validated for format if present.<br>*Example:* `"TXN1234567890"` | No |
| buyerSupplierId | string | Buyer-supplier relationship identifier. 1-50 alphanumeric characters.<br>*Example:* `"BUYER0001SP001"` | Yes |

#### SetAccountControlsModel-3 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"rule"**: object } ] |  | Yes |
| accounts | [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| ruleCurrency | string | ISO numeric currency code to be applied for all amount rules. Refer to <a href=\\"/capabilities/visa-b2b-payment-controls/docs-master-codes\\">Currency details</a> to find the list of supported currencies and their codes.<br><br>Note: This field is mandatory if any amount related rules are specified. | No |

#### CreateAccountSuccessResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string |  Message code showing the status of the request (Application specific code). | Yes |

#### SetAccountControlsModel-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"rule"**: object } ] |  | Yes |
| accounts | [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| ruleCurrency | string | ISO numeric currency code to be applied for all amount rules. Refer to <a href=\\"/capabilities/visa-b2b-payment-controls/docs-master-codes\\">Currency details</a> to find the list of supported currencies and their codes.<br><br>Note: This field is mandatory if any amount related rules are specified. | No |
| mcgRuleAction | string | Example: Allow<br>mcgRuleAction is the property that carries the value of action. mcgRuleAction value can be 'Allow or Block', by default the value will be 'Block'. | No |

#### SetAccountControlsModel-2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"rule"**: object } ] |  | Yes |
| accounts | [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| ruleCurrency | string | ISO numeric currency code to be applied for all amount rules. Refer to <a href=docs-master-codes#section2>Currency details</a> to find the list of supported currencies and their codes.<br><br>Note: This field is mandatory if any amount related rules are specified. | No |

#### DeleteUserMappingSuccessResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "success" | Processing status<br>*Enum:* `"success"`<br>*Example:* `"success"` | Yes |
| statusCode | string | Success status code<br>*Example:* `"VCMRS-CDS-INFO-2004"` | Yes |
| statusMessage | string | Success message<br>*Example:* `"Successfully deleted user mapping record."` | Yes |
| userMappingId | string (uuid) | User mapping ID that was deleted<br>*Example:* `"9f871721-bc8c-4fcf-b592-8b258810f129"` | Yes |

#### UpdateAccountContact Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| action | string, <br>**Available values:** "A", "D" | This is action that is to be performed on the contact (Create or Delete mapped to "A" or "D")<br>*Enum:* `"A"`, `"D"` | Yes |
| contact | string | Value must be a valid phone number or email. | Yes |
| countryCode | string | Country code of country.      This is required if the contact value is phone number.   | No |
| dialingCode | string | Required if the contact value is phone number. | No |
| languageCode | string | Must be ISO 639-1 standard regex. | Yes |
| notificationFormat | string | Value is required unless notificationChannel is NONE.     The format that the user would like to be used in communications about their account  | No |
| notificationChannel | string, <br>**Available values:** "EMAIL", "SMS", "BOTH", "NONE" | The channel for communication that the user would like to be communicated to through<br>*Enum:* `"EMAIL"`, `"SMS"`, `"BOTH"`, `"NONE"` | Yes |

#### ErrorResponse Schema

Error response for Contact Management APIs.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identified sent in the request | Yes |
| messageCode | string | Message code showing the status of the request (Application specific code). | Yes |

#### MerchantInfo Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AcquirerId | string | Acquirer ID (alphanumeric with underscores/hyphens, max 50 characters)<br>*Example:* `"ACQR123456"` | No |
| MerchantId | string | Merchant ID (alphanumeric with underscores/hyphens, max 50 characters)<br>*Example:* `"MERCH789012"` | No |
| MerchantURL | string | Merchant URL or app name<br>*Example:* `"https://example-merchant.com"` | No |
| MerchantName | string | Merchant name (max 100 characters)<br>*Example:* `"Example Merchant Store"` | No |
| AcquirerCountryCode | string | 3-digit acquirer country code<br>*Example:* `"840"` | No |
| MerchantCountryCode | string | 3-digit merchant country code<br>*Example:* `"840"` | No |
| MerchantCategoryCode | string | 4-digit merchant category code<br>*Example:* `"5411"` | No |
| MerchantAppRedirectURL | string | Merchant app redirect URL<br>*Example:* `"exampleapp://redirect"` | No |

#### AuthValidationResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| error | { **"code"**: string, **"message"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ] } |  | No |
| status | string, <br>**Available values:** "ACCEPTED", "ERROR" | Status of the validation acknowledgment<br>*Enum:* `"ACCEPTED"`, `"ERROR"`<br>*Example:* `"ACCEPTED"` | Yes |
| requestId | string | Unique identifier sent in the request<br>*Example:* `"req-12345678-abcd-efgh-ijkl-123456789012"` | Yes |

#### SetAccountControlsSuccessResponse Schema

Response for setting controls on accounts.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |
| accountsStatus | [ { **"status"**: string, **"ruleCount"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] |  | Yes |

#### ContactStatus Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| isHTML | boolean | Applicable if the contact value is HTML format.     Note: true only if the contact is email  | No |
| contact | string | Phone or email. | Yes |
| contactType | string | Phone Regex: "^[0-9+]{5,20}$"     Email Regex: "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$"          Note: Contact value can be one of a phone number or an email  | No |
| countryCode | string | Country code of country        Note: country Code is required if the contact value is phone number  | No |
| languageCode | string | language code must be  ISO 639-1 standard | No |

#### GetAccountSuccessResponse Schema

Response for Get Account API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"companyId"**: string, **"accountStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"statusMessage"**: string, **"accountDetails"**: { **"expYear"**: string, **"isToken"**: boolean, **"expMonth"**: string, **"isBlocked"**: boolean, **"ruleCount"**: string, **"accountLast4"**: string, **"emailContactCount"**: string, **"cardholderLastName"**: string, **"isControlSuspended"**: boolean, **"mobileContactCount"**: string, **"cardholderFirstName"**: string }, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } |  | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### AuthInitiationResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Error | { **"Message"**: string, **"Description"**: string, **"ReferenceNumber"**: string, **"ReasonDescription"**: string } |  | No |
| Reason | { **"ReasonCode"**: string, **"ReasonDescription"**: string } |  | No |
| Status | string, <br>**Available values:** "SUCCESS", "FAILURE", "ERROR" | Status of the authentication initiation<br>*Enum:* `"SUCCESS"`, `"FAILURE"`, `"ERROR"`<br>*Example:* `"SUCCESS"` | Yes |
| IssuerId | string | Unique identifier for the issuer<br>*Example:* `"f1e2d3c4b5a6f7e8d9c0b1a2"` | Yes |
| Language | string | Language code for the response<br>*Example:* `"en-US"` | No |
| StepupType | string, <br>**Available values:** "OTP", "BIOMETRIC" | Type of step-up authentication<br>*Enum:* `"OTP"`, `"BIOMETRIC"`<br>*Example:* `"OTP"` | No |
| Credentials | [ { **"Id"**: string, **"Text"**: string, **"Type"**: string, <br>**Available values:** "OTPEMAIL", "OTPSMS", "OTPIVR", "KBASINGLE", "BIOMETRIC", "OUTOFBANDOTHER", "OUTOFBANDTOKEN", **"Token"**: string, **"CustomerId"**: string } ] | List of credentials for authentication | No |
| ProcessorId | string | Unique identifier for the processor<br>*Example:* `"a1b2c3d4e5f6a7b8c9d0e1f2"` | Yes |
| RiskIndicator | string | Risk indicator value<br>*Example:* `"100"` | No |
| TransactionId | string | Unique identifier for the transaction<br>*Example:* `"a1b2c3d4-e5f6-47a7-b8c9-d0e1f2a3b4c5"` | Yes |
| StepupRequestId | string | Step-up request identifier<br>*Example:* `"c3d4e5f6-a7b8-49c9-d0e1-f2a3b4c5d6e7"` | Yes |
| TransStatusReason | string | Transaction status reason code<br>*Example:* `"01"` | No |
| IsBbConsentRequired | boolean | Indicates if biometric consent is required<br>*Example:* `false` | No |

#### AuthLookupResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Error | { **"Message"**: string, **"Description"**: string, **"ReferenceNumber"**: string, **"ReasonDescription"**: string } |  | No |
| Reason | { **"ReasonCode"**: string, **"ReasonDescription"**: string } |  | No |
| Status | string, <br>**Available values:** "SUCCESS", "FAILURE", "ERROR" | Authentication status<br>*Enum:* `"SUCCESS"`, `"FAILURE"`, `"ERROR"`<br>*Example:* `"SUCCESS"` | Yes |
| WhyInfo | { **"Text"**: string, **"Label"**: string } |  | No |
| IssuerId | string | Issuer ID from the request<br>*Example:* `"507f1f77bcf86cd799439012"` | Yes |
| Language | string | Language code for user interface<br>*Example:* `"en"` | No |
| OobAppURL | string | Out-of-band app URL<br>*Example:* `"https://auth.visa.com/oob/12345"` | No |
| StepupType | string, <br>**Available values:** "OTP", "BIOMETRIC" | Type of stepup authentication required<br>*Enum:* `"OTP"`, `"BIOMETRIC"`<br>*Example:* `"OTP"` | No |
| Credentials | [ { **"Id"**: string, **"Text"**: string, **"Type"**: string, <br>**Available values:** "OTPEMAIL", "OTPSMS", "OTPIVR", "KBASINGLE", "BIOMETRIC", "OUTOFBANDOTHER", "OUTOFBANDTOKEN", **"Token"**: string, **"CustomerId"**: string } ] | Available authentication credentials | No |
| ProcessorId | string | Processor ID from the request<br>*Example:* `"507f1f77bcf86cd799439011"` | Yes |
| RiskIndicator | string | Risk indicator<br>*Example:* `"LOW"` | No |
| TransactionId | string | Transaction ID from the request<br>*Example:* `"550e8400-e29b-41d4-a716-446655440000"` | Yes |
| StepupRequestId | string | Stepup request ID from the request<br>*Example:* `"550e8400-e29b-41d4-a716-446655440002"` | Yes |
| TransStatusReason | string | Transaction status reason (2 characters)<br>*Example:* `"01"` | No |
| IsBbConsentRequired | boolean | Whether behavioral biometrics consent is required<br>*Example:* `false` | No |

#### CreateUserMappingResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### CreateCompanyData Schema

Response data for successful company creation.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| companyId | string | VPC generated Id after successful creation of the company. This Id will be used for all the future requests that are related to this company. | Yes |
| portfolioId | string | Id indicating the portfolio under which the company is enrolled. Note - Portfolio is a program setup under a bank. | Yes |

#### GetTransactionHistory Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| endDate | string | Expected format: MM/DD/YYYY<br>End date of the date range within which the transactions needs to be fetched. | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| startDate | string | Expected format: MM/DD/YYYY<br>Start date of the date range within which the transactions needs to be fetched. | Yes |
| pageNumber | string (int32) | Default value: 1 <br><br>Used for pagination to fetch subsequent next set of records. | No |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| maxRecordsToReturn | string (int32) | Default value: 250<br><br>Specifies maximum records to be returned in the response. | No |

#### UpdateUserMappingResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"b36a6f9a-75ac-411c-8928-5f31a2a747fd"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"statusCode"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] | Results for each user mapping update | Yes |

#### AuthRecordRequest Schema

Auth Record request

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ECI | string | Payment system specific value provided by ACS to indicate results of the attempt to authenticate<br>*Example:* `"05"` | No |
| CAVV | string | Payment system specific value that is used to provide proof of authentication. This is the Base64 representation of the authentication value<br>*Example:* `"AAABBIIFmAAAAAAAAAAAAAA="` | No |
| CAVVHex | string | Payment system specific value that is used to provide proof of authentication. This is the Hexadecimal representation of the authentication value<br>*Example:* `"0000040881664000000000000000000000"` | No |
| RequestID | string | System generated transaction reference ID. This field is named 'TransactionId' in the VCAS RDX API<br>*Example:* `"a1b2c3d4-e5f6-47a7-b8c9-d0e1f2a3b4c5"` | Yes |
| RiskScore | string | Risk score of the transaction as determined by VCAS<br>*Example:* `"85"` | No |
| ThreeRIInd | string | Indicates the type of 3RI request<br>*Example:* `"01"` | No |
| IssuerOrgId | string | Organization ID designated by VCAS. Hexadecimal value<br>*Example:* `"a1b2c3d4e5f6a7b8c9d0e1f2"` | No |
| MerchantInfo | { **"AcquirerId"**: string, **"MerchantId"**: string, **"MerchantURL"**: string, **"MerchantName"**: string, **"AcquirerCountryCode"**: string, **"MerchantCountryCode"**: string, **"MerchantCategoryCode"**: string, **"MerchantAppRedirectURL"**: string } | Merchant information for the transaction | No |
| ExemptionInfo | { **"MCRiskScore"**: string, **"WhitelistStatus"**: string, **"MerchantFraudRate"**: string, **"WhitelistStatusSource"**: string, **"SecureCorporatePayment"**: string } | Object containing exemption information | No |
| ExtensionData | { **"ACSRBA"**: { **"Score"**: string, **"Status"**: string, **"Decision"**: string, **"ReasonCode1"**: string, **"ReasonCode2"**: string }, **"DAFExtension"**: { **"Version"**: string, **"DAFAdvice"**: string, **"AuthPayCredStatus"**: string, <br>**Available values:** "Y", "N", "U", "B", "I", **"AuthPayProcessReqInd"**: string }, **"EMVPaymentToken"**: { **"Version"**: string, **"TokenRequestorId"**: string, **"TokenAdditionalData"**: { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string }, **"TokenStatusIndicator"**: string }, **"VisaPaymentTokenExtension"**: { **"Token"**: string, **"Version"**: string, **"TokenCryptogram"**: string, **"TokenRequestorId"**: string, **"TokenAdditionalData"**: { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string }, **"TokenAssuranceMethod"**: string, **"TokenStatusIndicator"**: string, <br>**Available values:** "A", "I", "S", "D", "P", **"TokenCryptogramValidityIndicator"**: string, <br>**Available values:** "01", "02", "03" } } | Object containing transaction extension information | No |
| MessageVersion | string | Version of the message based on 3DS specification; i.e. 1.0.2, 2.1.0, 2.2.0<br>*Example:* `"2.2.0"` | No |
| DSTransactionId | string | Directory Server (DS) generated transaction reference id. GUID Format. Note: Required for EMV 3DS 2.x transactions only<br>*Example:* `"b2c3d4e5-f6a7-48b8-c9d0-e1f2a3b4c5d6"` | No |
| TransactionInfo | { **"Channel"**: string, <br>**Available values:** "WEB", "APP", "MWEB", "THREERI", **"DeviceInfo"**: { **"IP"**: string, **"Locale"**: string, **"Latitude"**: string, **"Platform"**: string, **"SDKAppId"**: string, **"Longitude"**: string, **"UserAgent"**: string, **"DeviceName"**: string, **"DeviceModel"**: string, **"BrowserWidth"**: string, **"AdvertisingId"**: string, **"BrowserLanguage"**: string, **"BrowserTimeZone"**: string, **"ScreenResolution"**: string, **"BrowserColorDepth"**: string, **"BrowserJavaEnabled"**: string, **"DeviceExtendedData"**: string, **"BrowserAcceptHeader"**: string, **"BrowserScreenHeight"**: string, **"OperatingSystemName"**: string, **"OperatingSystemVersion"**: string, **"BrowserJavascriptEnabled"**: boolean }, **"FlowStatus"**: string, <br>**Available values:** "Fully Authenticated", "Not Authenticated", "Not Authenticated with Feedback", "Attempts", "Merchant Cancelled", "Cardholder Cancelled", "Incomplete", "Unavailable", "Rejected", "Informational Only", **"PaymentInfo"**: { **"CardType"**: string, <br>**Available values:** "Credit", "Debit", "Not Applicable", **"CardNumber"**: string, **"CardExpiryYear"**: string, **"CardHolderName"**: string, **"CardExpiryMonth"**: string }, **"ReasonCodes"**: { **"Risk"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"StepUp"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"Validate"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"InitiateAction"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string } }, **"AddressMatch"**: string, <br>**Available values:** "Y", "N", **"ConsumerInfo"**: { **"WorkNumber"**: string, **"PhoneNumber"**: string, **"EmailAddress"**: string, **"MobileNumber"**: string }, **"PurchaseType"**: string, <br>**Available values:** "GoodsOrService", "CheckAcceptance", "AccountFunding", "QuasiCash", "PrepaidActivation", **"RuleTriggered"**: string, **"VcasPanStatus"**: string, **"BillingAddress"**: { **"Region"**: string, **"Address1"**: string, **"Address2"**: string, **"Address3"**: string, **"LastName"**: string, **"Locality"**: string, **"FirstName"**: string, **"MiddleName"**: string, **"PostalCode"**: string, **"CountryCode"**: string }, **"MandatedRegion"**: string, <br>**Available values:** "EEA", "NONE", "UNKNOWN", **"ChallengeCancel"**: string, **"ShippingAddress"**: { **"Region"**: string, **"Address1"**: string, **"Address2"**: string, **"Address3"**: string, **"LastName"**: string, **"Locality"**: string, **"FirstName"**: string, **"MiddleName"**: string, **"PostalCode"**: string, **"CountryCode"**: string }, **"TransactionType"**: string, <br>**Available values:** "Purchase", "CardAdd", **"RiskProviderInfo"**: { **"Name"**: string, <br>**Available values:** "ThreatMetrix", **"DeviceId"**: string, **"ProviderId"**: string }, **"TransactionAmount"**: number, **"ConsumerWalletInfo"**: { **"Provider"**: string, **"WalletAge"**: long, **"PaymentCardAge"**: long }, **"TransactionCurrency"**: string, **"TransactionExponent"**: integer, **"TransactionAmountUSD"**: number, **"TransactionTimeStamp"**: string, **"MerchantAdditionalData"**: { **"PreorderDate"**: string, **"GiftCardCount"**: string, **"GiftCardAmount"**: string, **"GiftCardCurrency"**: string, **"DeliveryTimeFrame"**: string, <br>**Available values:** "ElectronicDelivery", "SameDayShipping", "OvernightShipping", "TwoOrMoreDaysShipping", **"ShippingIndicator"**: string, <br>**Available values:** "ShipToBillingAddress", "ShipToVerifiedAddress", "ShipToOtherAddress", "ShipToStore", "DigitalGoods", "TravelOrEventTickets", "Other", **"DeliveryEmailAddress"**: string, **"ReorderItemsIndicator"**: string, <br>**Available values:** "FirstTime", "Reordered", **"PreorderPurchaseIndicator"**: string, <br>**Available values:** "MerchandiseAvailable", "FutureAvailability" } } | Transaction information for the authentication request | No |
| TransStatusReason | string | A value from the VCAS TransStatusReason field that will appear on either the ARes or RReq message (depending on whether or not the transaction was challenged)<br>*Example:* `"01"` | No |
| AuthenticationType | string, <br>**Available values:** "OTP", "OTPEMAIL", "OTPSMS", "OTPIVR", "KBASINGLE", "BIOMETRIC", "BIOMETRIC_FACIAL", "BIOMETRIC_FINGERPRINT", "OUTOFBANDOTHER" | Type of authentication credential used for a given transaction<br>*Enum:* `"OTP"`, `"OTPEMAIL"`, `"OTPSMS"`, `"OTPIVR"`, `"KBASINGLE"`, `"BIOMETRIC"`, `"BIOMETRIC_FACIAL"`, `"BIOMETRIC_FINGERPRINT"`, `"OUTOFBANDOTHER"`<br>*Example:* `"OTP"` | No |
| AuthenticationResponse | string, <br>**Available values:** "Y", "N", "U", "A", "R", "I" | The authentication response which is sent back to the merchant in 3DS<br>*Enum:* `"Y"`, `"N"`, `"U"`, `"A"`, `"R"`, `"I"`<br>*Example:* `"Y"` | Yes |
| AdditionalRiskResultInfo | { **"IPVelocity"**: string, **"RiskIndicator"**: string, **"DeviceIDVelocity"**: string } | Object containing additional risk result information | No |
| MerchantChallengeIndicator | string | Indicates whether a challenge is requested from the merchant<br>*Example:* `"04"` | No |
| threeDSRequestorPriorAuthenticationInfo | { **"threeDSReqPriorRef"**: string, **"threeDSReqPriorAuthData"**: string, **"threeDSReqPriorAuthMethod"**: string, **"threeDSReqPriorAuthTimestamp"**: string } | Object containing prior transaction authentication data for 3DS request | No |

#### GetTransactionHistorySuccessResponse-1 Schema

Success response for Get Transaction History API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | No |
| requestId | string | Unique identifier sent in the request. | No |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | No |
| messageCode | string | Message code indicating the status of the request (Application specific code). | No |
| accountLast4 | string | Last 4 digits of the account number. | No |
| transactions | [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"triggerTypeCode"**: string, **"triggerTypeText"**: string, **"merchantLocation"**: string, **"transactionAmount"**: string, **"merchantCountryCode"**: string, **"transactionTimeStamp"**: string } ] |  | No |
| isLastDataSet | boolean | Indicates if the result set is the last data set. | No |

#### DeleteAccountModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accounts | [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |

#### GetAccountControlsRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |

#### StepUp Schema

An object containing the ReasonCode for StepUp

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ReasonCode | string | Used by the issuer for informational purposes<br>*Example:* `"STEPUP001"` | No |
| ReasonDescription | string | Used by the issuer for informational purposes<br>*Example:* `"Additional authentication required"` | No |

#### DAFExtension Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Version | string | Version of the DAF extension<br>*Example:* `"1.0"` | No |
| DAFAdvice | string | DAF Advice<br>*Example:* `"APPROVED"` | No |
| AuthPayCredStatus | string | Auth Pay Credential Status<br>*Example:* `"Y"` | No |
| AuthPayProcessReqInd | string | Auth Pay Process Request Indicator<br>*Example:* `"Y"` | No |

#### UpdateUserMappingRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Client identifier assigned by Visa<br>*Example:* `"fintech_0001"` | Yes |
| issuerBid | string | Bank Identification Number. Must be exactly 8 digits.<br>*Example:* `"10000130"` | Yes |
| userMappings | [ { **"endDate"**: date, **"timezone"**: string, **"userMappingId"**: string (uuid), **"authenticationMethod"**: string, <br>**Available values:** "OTP", "BIOMETRIC" } ] | Array of user mapping updates. Maximum 250 updates per request. | Yes |
| callbackRequired | boolean | Indicates whether a callback should be sent to the pre-configured callback URL for this clientId upon processing completion.<br>*Example:* `true` | No |

#### RecordError Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Description | string | A description of the error. Sent from RDX response.<br>*Example:* `"Invalid request format"` | No |
| ReferenceNumber | string | System reference number for the error message.<br>*Example:* `"ERR001"` | No |

#### UpdateUserMappingCallbackPayload Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"b36a6f9a-75ac-411c-8928-5f31a2a747fd"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"statusCode"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] | Results for each user mapping update | Yes |

#### DeleteAccountData Schema

Response data for account deletion.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding account. This message is mapped with the statusMessageCode. | Yes |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific Status message code indicating the status of the corresponding account. | Yes |

#### CreateAccountSuccessResponse-1 Schema

Response for Create Company API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"accountsStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } |  | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### AccountContact Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| contact | string | Value can either be a phone number or an email. | Yes |
| countryCode | string | Country code of country. Required if the contact value is phone number. | No |
| dialingCode | string | Must be a valid mobile dialing number code and must only contain digits, no '+' at the beginning.     Required if the contact value is phone number. | No |
| languageCode | string | Must be ISO 639-1 standard. | Yes |
| notificationFormat | string | Value is required unless notificationChannel is NONE.     The format that the user would like to be used in communications about their account | No |
| notificationChannel | string, <br>**Available values:** "EMAIL", "SMS", "BOTH", "NONE" | The channel for communication that the user would like to be communicated to through<br>*Enum:* `"EMAIL"`, `"SMS"`, `"BOTH"`, `"NONE"` | Yes |

#### PolicyDetail-1 Schema

Spend Policy Details only needed if rule code is SPP.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rangeType | string |  | No |
| dayOfTheWeek | string |  | No |
| spendLimitAmount | string |  | No |
| merchantCategoryGroups | [ string ] |  | No |
| merchantCategoryRanges | [ { **"maxMCC"**: string, **"minMCC"**: string } ] |  | No |
| accumulatedSpendResetIndicator | string |  | No |

#### AccountDetails Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| isToken | boolean | Indicates if the account is Visa pseudo account. | Yes |
| contacts | [ { **"contact"**: string, **"countryCode"**: string, **"dialingCode"**: string, **"languageCode"**: string, **"notificationFormat"**: string, **"notificationChannel"**: string, <br>**Available values:** "EMAIL", "SMS", "BOTH", "NONE" } ] |  | No |
| lastName | string, <br>**Default:** LNU | Alphanumeric string between 1 and 100 characters.     This is cardholder's last name. If not provided, will default to "LNU".  | No |
| firstName | string, <br>**Default:** FNU | Alphanumeric string between 1 and 100 characters.     This is cardholder's first name. If not provided, will default to "FNU".  | No |
| accountKey | string | Unique value assigned to an account in VPC during account onboarding. | Yes |
| companyName | string | This is the name of the Company | Yes |
| customerClientID | string | This is the Client ID in the customers system. | Yes |
| tokenReferenceId | string | Alphanumeric value. Value will be provided if the account type is token.    This is internally used to associate Visa Virtual Accounts. Not applicable for integrating directly through VDP. | No |
| customerCompanyID | string | This is the Company ID in the customer system. This ID will help identify the accounts that belong to the same company | Yes |

#### UpdateAccountData Schema

Response data for account updation.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |

#### GetRuleSuggestionsRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| prompt | string | Use case provided in plain (natural language) text | Yes |
| contextId | string | Unique Context ID (Per Session). A unique context ID must be provided for each session. Once a context ID is used and the context is changed, the memory associated with that session is cleared. The same context ID cannot be reused for future sessions. | Yes |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| vpcClientId | string | VPC generated client identifier for VPC clients | Yes |
| accountNumber | string | 16 digit account number. | Yes |

#### UpdateUserMappingErrorResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "error" | Processing status<br>*Enum:* `"error"`<br>*Example:* `"error"` | Yes |
| statusCode | string | Error status code<br>*Example:* `"VCMRS-CDS-ERR-4000"` | Yes |
| errorDetails | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Detailed error information | Yes |
| statusMessage | string | Error summary message<br>*Example:* `"Error processing user mapping record."` | Yes |
| userMappingId | string (uuid) | User mapping ID that failed to update<br>*Example:* `"ee355a5b-3ea1-4a83-ac7c-2112c3d41560"` | Yes |

#### AccountControlData-3 Schema

Response data to fetch controls.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"rule"**: object } ] |  | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| ruleCurrency | string | ISO numeric currency code to be applied for all amount rules. Refer to <a href="docs-master-codes#section2">Currency details</a> to find the list of supported currencies and their codes.<br><br>Note: This field is mandatory if any amount related rules are specified. | No |

#### ExtensionData Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| DAFExtension | { **"Version"**: string, **"DAFAdvice"**: string, **"AuthPayCredStatus"**: string, **"AuthPayProcessReqInd"**: string } |  | No |
| VisaPaymentTokenExtension | { **"Token"**: string, **"Version"**: string, **"TokenCryptogram"**: string, **"TokenRequestorId"**: string, **"TokenAdditionalData"**: { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string }, **"TokenAssuranceMethod"**: string, **"TokenStatusIndicator"**: string, <br>**Available values:** "A", "I", "S", "D", "P", **"TokenCryptogramValidityIndicator"**: string, <br>**Available values:** "01", "02", "03" } |  | No |

#### SetSuggestedModifiedRulesRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| modified | boolean | Accepted values include "true" and "false". This flag indicates if modified is true then setModifiedRules is required. | No |
| contextId | string | Unique Context ID (Per Session). A unique context ID must be provided for each session. Once a context ID is used and the context is changed, the memory associated with that session is cleared. The same context ID cannot be reused for future sessions. | Yes |
| ruleSetId | string | ruleSetId generated in get-rule-suggestions API | Yes |
| accountNumber | string | 16 digit account number. | Yes |
| setModifiedRules | { **"rules"**: [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ], **"endDate"**: string, **"timezone"**: string, <br>**Default:** GMT Standard Time, **"startDate"**: string, **"ruleCurrency"**: string, **"mcgRuleAction"**: string, <br>**Available values:** "ALLOW", "BLOCK" } |  | No |

#### GetUserMappingCallbackPayload Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"7cfa8e33-cd5f-43a3-b98d-4094c55e8c65"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"userId"**: string, **"account"**: string, **"endDate"**: dateTime, **"clientId"**: string, **"timezone"**: string, **"companyId"**: string, **"issuerBid"**: string, **"statusCode"**: string, **"accountType"**: string, <br>**Available values:** "PLASTIC", "VIRTUAL", "TOKEN", "FUNDING", "PAN", **"accountPoolId"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid), **"authenticationMethod"**: string, <br>**Available values:** "OTP", "BIOMETRIC" } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] | Results for each user mapping ID queried | Yes |

#### CreateAccountModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accounts | [ { **"cvv"**: string, **"expYear"**: string, **"isToken"**: boolean, **"expMonth"**: string, **"isBlocked"**: boolean, **"accountNumber"**: string, **"sequenceNumber"**: string, **"cardholderLastName"**: string, **"cardholderFirstName"**: string } ] |  | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |

#### AuthValidationRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "SUCCESS", "FAILURE" | Result of the BIOMETRIC authentication<br>*Enum:* `"SUCCESS"`, `"FAILURE"`<br>*Example:* `"SUCCESS"` | Yes |
| clientId | string | Client identifier — must match the value of the clientId request header<br>*Example:* `"TestClient_1234"` | Yes |
| issuerId | string | 24-character hexadecimal identifier for the issuer<br>*Example:* `"f1e2d3c4b5a6f7e8d9c0b1a2"` | Yes |
| issuerBid | string | 8-digit issuer BID identifier<br>*Example:* `"12345678"` | Yes |
| acsClientId | string | ACS provider identifier<br>*Example:* `"acs_10001"` | Yes |
| authTraceId | string | Trace identifier for the auth request processing (UUID format)<br>*Example:* `"550e8400-e29b-41d4-a716-446655440099"` | Yes |
| processorId | string | 24-character hexadecimal identifier for the processor<br>*Example:* `"a1b2c3d4e5f6a7b8c9d0e1f2"` | Yes |
| errorMessage | string | Optional error message provided in case of authentication failure<br>*Example:* `"Biometric authentication failed"` | No |
| transactionId | string | 36-character GUID for the transaction<br>*Example:* `"a1b2c3d4-e5f6-47a7-b8c9-d0e1f2a3b4c5"` | Yes |
| userMappingId | string | User mapping Id (UUID format)<br>*Example:* `"f1e2d3c4-b5a6-7890-1234-567890abcdef"` | Yes |
| stepupRequestId | string | 36-character GUID for the stepup request<br>*Example:* `"b2c3d4e5-f6a7-48b8-c9d0-e1f2a3b4c5d6"` | Yes |

#### DeleteUserMappingErrorResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "error" | Processing status<br>*Enum:* `"error"`<br>*Example:* `"error"` | Yes |
| statusCode | string | Error status code<br>*Example:* `"VCMRS-CDS-ERR-4000"` | Yes |
| errorDetails | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Detailed error information | Yes |
| statusMessage | string | Error summary message<br>*Example:* `"Error processing user mapping record."` | Yes |
| userMappingId | string (uuid) | User mapping ID that failed to delete<br>*Example:* `"ee355a5b-3ea1-4a83-ac7c-2112c3d41560"` | Yes |

#### DeleteCompanyData Schema

Response data for successful company deletion.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| companyId | string | VPC generated Id after successful creation of the company. This Id will be used for all the future requests that are related to this company. | Yes |

#### GetCompanyModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |

#### MessageItem Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| contactType | string | Phone Regex: "^[0-9+]{5,20}$"     Email Regex: "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\\\.[a-zA-Z]{2,}$"          Note: Contact value can be one of a phone number or an email  | No |
| messageText | string | Message that was sent in the notification.  | No |

#### GetAccountModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accounts | [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |

#### ACSRBA Schema

Mastercard risk analysis provided by the Mastercard Directory Server. The ADX request needs to include ACSRBA object fields in order for an issuer to receive the Mastercard risk-based extension data. Refer to the Mastercard program guide for more information.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Score | string | Risk score from Mastercard<br>*Example:* `"85"` | No |
| Status | string | Status of the risk analysis<br>*Example:* `"APPROVED"` | No |
| Decision | string | Risk decision from Mastercard<br>*Example:* `"ACCEPT"` | No |
| ReasonCode1 | string | First reason code<br>*Example:* `"RC01"` | No |
| ReasonCode2 | string | Second reason code<br>*Example:* `"RC02"` | No |

#### RegisterSupplierRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| caid | string | Card Acceptor ID associated with the supplier. 1-15 alphanumeric characters.<br>*Example:* `"SUPPLIER001234"` | Yes |
| buyerId | string | Buyer identifier. 1-50 alphanumeric characters.<br>*Example:* `"BUYER0001"` | Yes |
| clientId | string | Client ID provided by Visa during onboarding. Must match the `clientId` header.<br>*Example:* `"Fintech_0001"` | Yes |
| issuerBid | string | Issuer BID. Must be exactly 8 digits.<br>*Example:* `"10000130"` | Yes |
| requestId | string | Unique request identifier (UUID or 1-50 alphanumeric with hyphens/underscores).<br>*Example:* `"a1a8aee1-3cd5-4806-ac02-b7ee70acd3d2"` | Yes |
| acquirerBin | string | Acquirer BIN associated with the supplier. 6-8 digits.<br>*Example:* `"420601"` | Yes |
| contactInfo | { **"city"**: string, **"state"**: string, **"postalCode"**: string, **"countryCode"**: string, **"addressLine1"**: string, **"addressLine2"**: string, **"addressLine3"**: string, **"supplierName"**: string } |  | Yes |
| buyerSupplierId | string | Buyer-supplier relationship identifier. 1-50 alphanumeric characters.<br>*Example:* `"BUYER0001SP001"` | Yes |

#### CreateRuleStructureData-2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rule | object | Specify all the rules to be applied on the card. Refer to <a href="docs-rule-codes">Rule details</a> to find the rule details and request structure. | Yes |

#### ValidationErrors Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorCode | string | Error code indicating the status of the request (if GenAI-produced rules have validation problems). | No |
| errorMessage | string | Error message describing the validation error. This message is mapped with the errorCode. | No |

#### CreateRuleStructureData-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rule | object | Specify all the rules to be applied on the card. Refer to <a href=\\"/capabilities/visa-b2b-payment-controls/docs-rule-codes\\">Rule details</a> to find the rule details and request structure. | Yes |

#### DisableEnableRulesRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| blockRule | boolean | Accepted values include "true"  and "false".   This flag indicates if the account should be blocked. If set to ‘true’, then no transactions will be allowed on the account. | No |
| isDisable | boolean | Accepted values include "true"  and "false".   This flag indicates if all existing rules on the account should be disabled.  | Yes |
| accountNumber | string | 16 digit account number to be added. | Yes |

#### CreateContactSuccessResponse Schema

Response for Create Contact API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"serviceKey"**: string, **"accountLast4"**: string, **"contactsStatus"**: [ { **"status"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } | Response data for Create Contact API. | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Application specific message code indicating the status of the request. | Yes |

#### BaseVirtualSecureRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| buyerId | string | Buyer identifier cannot exceed 25 characters | Yes |
| issuerId | string | Issuer identifier cannot exceed 8 characters | Yes |
| messageId | string | Unique message identifier. It cannot exceed 36 characters | Yes |
| buyerSupplierId | string | Buyer supplier identifier cannot exceed 30 characters | Yes |

#### Risk Schema

An object containing the ReasonCode for Risk

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ReasonCode | string | Used by the issuer for informational purposes<br>*Example:* `"RISK001"` | No |
| ReasonDescription | string | Used by the issuer for informational purposes<br>*Example:* `"High risk transaction detected"` | No |

#### AccountControlData Schema

Response data to fetch controls.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"rule"**: object } ] |  | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |

#### ValidateError Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code | string | Error code indicating the status of the request<br>*Example:* `"VALIDATION_ERROR"` | Yes |
| message | string | Error message describing the request processing status mapped with the code<br>*Example:* `"Request validation failed"` | Yes |
| errorDetails | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Array of error details | Yes |

#### SetRulesRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ] | Array of rules to be set on account. | Yes |
| endDate | date | End Date value must be greater than the Start Date. If the rules were set in the past or for the current date, only then the end date for those rules will be displayed here. The End Date value is required for Spend Velocity (SPV) and Spend Policy Control (SPP) rules. | No |
| timezone | string, <br>**Default:** GMT Standard Time | ISO time zone     Must contain only characters and be existing time zone in the database.   Please refer to "Master Codes" section for all available timezones. <br>*Example:* `"Eastern Standard Time"` | No |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| startDate | date |  If the rules were set in the past or for the current date, only then the start date for those rules will be displayed here. | No |
| ruleCurrency | string | ISO currency code. Up to 3 digit number. Must be existing currency in the database.     This is the ISO numeric currency code that is to be applied for all amount specific rules. Please refer to ‘Master Codes’ section to find the list of supported currencies and their codes. <br>*Example:* `"840"` | Yes |
| accountNumber | string | 16 digit account number. | Yes |
| mcgRuleAction | string, <br>**Available values:** "ALLOW", "BLOCK" | This is used to identify whether to allow or block a transaction based on the set Merchant Category Group (MCG) rules. The default value for mcgRuleAction is BLOCK.<br>*Enum:* `"ALLOW"`, `"BLOCK"` | No |
| tokenReferenceId | string | Alphanumeric and required if the account type is token.     This is internally used to associate Visa Virtual Accounts. This will not be validated and will be forwarded to VIP.  Additionally, this is not applicable for integrating directly through VDP.   | No |

#### GetContactRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| sequenceNumber | string | Expected value: A number in the range 0-249. Must start from 0 following other numbers in ascending order.<br><br>This value is used to map the response to the corresponding contact in the request. | Yes |

#### VelocityDetails-1 Schema

Spend Velocity Details only needed if rule code is SPV.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| maxAuth | string | Maximum number of authorizations allowed in the period. | No |
| rangeType | string | Type of period (e.g., DAILY). | No |
| updateFlag | string | Update flag (e.g., REPLACE). | No |
| notifyOption | string | Notification option (e.g., ONCE). | No |
| thresholdAmount | string | Threshold amount for notifications. | No |
| spendLimitAmount | string | Total spend limit amount. | No |
| consumedAuthCount | integer | Number of consumed authorizations. | No |
| consumedAuthAmount | integer | Amount consumed. | No |

#### PollRequestStatusRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Client identifier assigned by Visa<br>*Example:* `"fintech_0001"` | Yes |
| issuerBid | string | Bank Identification Number. Must be exactly 8 digits.<br>*Example:* `"10000130"` | Yes |
| requestId | string (uuid) | Request ID from the acknowledgement response<br>*Example:* `"f142b706-a011-44c2-a40e-bb3b2be5a625"` | Yes |

#### RulesErrorResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorCode | string | Error code indicating the status of the request (Application specific code). | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| errormessage | string | Error message describing the request processing status. This message is mapped with the errorCode.  | Yes |

#### ServerErrorResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string | Echo of requestId from the request.<br>*Example:* `"a1a8aee1-3cd5-4806-ac02-b7ee70acd3d2"` | No |
| statusCode | string | Error status code.<br>*Example:* `"SV-ERR-5000"` | Yes |
| statusMessage | string | Error message.<br>*Example:* `"Internal server error"` | Yes |

#### SetRulesRequest-2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ] | Array of rules to be set on account. | Yes |
| endDate | string | End Date value must be greater than the Start Date. If the rules were set in the past or for the current date, only then the end date for those rules will be displayed here. The End Date value is required for Spend Velocity (SPV) and Spend Policy Control (SPP) rules. | No |
| timezone | string, <br>**Default:** GMT Standard Time | ISO time zone. Must contain only characters and be an existing time zone in the database.<br>*Example:* `"Eastern Standard Time"` | No |
| startDate | string | If the rules were set in the past or for the current date, only then the start date for those rules will be displayed here. | No |
| ruleCurrency | string | ISO currency code. Up to 3 digit number. Must be existing currency in the database. This is the ISO numeric currency code that is to be applied for all amount specific rules.<br>*Example:* `"840"` | Yes |
| accountNumber | string | 16 digit account number. | No |
| mcgRuleAction | string, <br>**Available values:** "ALLOW", "BLOCK" | This is used to identify whether to allow or block a transaction based on the set Merchant Category Group (MCG) rules. The default value for mcgRuleAction is BLOCK.<br>*Enum:* `"ALLOW"`, `"BLOCK"` | No |
| tokenReferenceId | string | Alphanumeric and required if the account type is token. This is internally used to associate Visa Virtual Accounts. This will not be validated and will be forwarded to VIP. Additionally, this is not applicable for integrating directly through VDP. | No |

#### SetRulesRequest-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ] | Array of rules to be set on account. | Yes |
| endDate | string | End Date value must be greater than the Start Date. If the rules were set in the past or for the current date, only then the end date for those rules will be displayed here. The End Date value is required for Spend Velocity (SPV) and Spend Policy Control (SPP) rules. | No |
| timezone | string, <br>**Default:** GMT Standard Time | ISO time zone. Must contain only characters and be an existing time zone in the database.<br>*Example:* `"Eastern Standard Time"` | No |
| startDate | string | If the rules were set in the past or for the current date, only then the start date for those rules will be displayed here. | No |
| ruleCurrency | string | ISO currency code. Up to 3 digit number. Must be existing currency in the database. This is the ISO numeric currency code that is to be applied for all amount specific rules.<br>*Example:* `"840"` | Yes |
| mcgRuleAction | string, <br>**Available values:** "ALLOW", "BLOCK" | This is used to identify whether to allow or block a transaction based on the set Merchant Category Group (MCG) rules. The default value for mcgRuleAction is BLOCK.<br>*Enum:* `"ALLOW"`, `"BLOCK"` | No |

#### BlockAccountRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| accountNumber | string | 16 digit account number. | Yes |

#### CreateAccountRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| isBlock | boolean | Value must be either "true" or "false".    Indicates if the account should be blocked from any transactions until rules are set. This will ensure no transactions are allowed on the account. | No |
| isToken | boolean | Value must be either "true" or "false".     Indicates if the account is Visa pseudo account. | Yes |
| contacts | [ { **"contact"**: string, **"countryCode"**: string, **"dialingCode"**: string, **"languageCode"**: string, **"notificationFormat"**: string, **"notificationChannel"**: string, <br>**Available values:** "EMAIL", "SMS", "BOTH", "NONE" } ] |  | No |
| lastName | string |  Alphanumeric string between 1 and 100 characters.      This is cardholder's last name. If not provided, will default to "LNU". | No |
| firstName | string | Alphanumeric string between 1 and 100 characters.     This is cardholder's first name. If not provided, will default to "FNU". | No |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| companyName | string | Alphanumeric string between 1 and 100 characters.     This is name of the company.  | Yes |
| accountNumber | string | 16 digit account number. | Yes |
| customerClientId | string | Alphanumeric value between 2 and 99 characters.    This is Company Id in the customer system. This Id will help identify the accounts that belong to same company. | Yes |
| tokenReferenceId | string | Alphanumeric and required if the account type is token.    This is internally used to associate Visa Virtual Accounts. Not applicable for integrating directly through VDP.  | No |
| customerCompanyId | string | Alphanumeric value between 2 and 99 characters     This is the ID of the company. | Yes |

#### WhyInfo Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Text | string | Detailed explanation of why the authentication is being performed, displayed to the cardholder<br>*Example:* `"This authentication is required for your security"` | No |
| Label | string | Short label summarising why the authentication is being performed<br>*Example:* `"Security Notice"` | No |

#### DeleteAccountEntity Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| sequenceNumber | string | Expected value: A number in the range 0-249. Must start from 0 following other numbers in ascending order.<br><br>This value is used to map the response to the corresponding account in the request. | Yes |

#### GetTransactionData Schema

Transaction data for Report Management APIs.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| mccCode | string | Merchant Category Code. | No |
| actionText | string | Indicates if the transaction was declined or approved. | No |
| billerAmount | string | Transaction amount in Issuer currency. | No |
| currencyCode | string | Currency code in which the transaction was authorized. | No |
| merchantName | string | Merchant name at which the transaction was processed. | No |
| transactionId | string | Unique identifier for the transaction. | No |
| billerCurrency | string | Transaction currency code in Issuer currency. | No |
| triggerTypeCode | string | VPC specific rule code due to which the transaction was declined/approved. | No |
| triggerTypeText | string | Describes the VPC specific rule code due to which the transaction was declined/approved. | No |
| merchantLocation | string | Merchant location where the transaction was processed. | No |
| transactionAmount | string | Amount in transaction currency that was authorized. | No |
| merchantCountryCode | string | Merchant country where the transaction was processed. | No |
| transactionTimeStamp | string | Format: yyyy-mm-dd hh:mm:ss.xxx<br>Example: 2020-08-21 10:51:31.000<br><br>Timestamp in GMT when the transaction was processed. | No |

#### MerchantBinCaid Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| caid | string | Card Acceptor ID associated with the supplier | Yes |
| acquirerBin | string | Acquirer BIN (Bank Identification Number) associated with the supplier | Yes |

#### GetNotificationHistorySuccessResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"isLastDataSet"**: boolean, **"notifications"**: [ { **"messages"**: [ { **"contactType"**: string, **"messageText"**: string } ], **"transaction"**: [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"cardAcceptorId"**: string, **"triggerTypeCode"**: [ string ], **"triggerTypeText"**: [ string ], **"merchantLocation"**: string, **"transactionAmount"**: string, **"transactionTimeStamp"**: string } ], **"contactStatus"**: [ { **"isHTML"**: boolean, **"contact"**: string, **"contactType"**: string, **"countryCode"**: string, **"languageCode"**: string } ] } ] } |  | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode.  | Yes |
| requestId | string | Unique identifier sent in the request.  | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code).  | Yes |

#### DeleteUserMappingCallbackPayload Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"23cf72a0-c377-4428-a85d-4630ab6a0c56"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"statusCode"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] | Results for each user mapping deletion | Yes |

#### ThreeDSRequestorPriorAuthenticationInfo Schema

Object containing prior transaction authentication data for 3DS request

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| threeDSReqPriorRef | string | Data which provides additional information to the ACS to determine the best approach for handling a request<br>*Example:* `"d7c1ee99-9478-44a6-b1f2-391e29c6b340"` | No |
| threeDSReqPriorAuthData | string | Data that documents and supports a specific authentication process<br>*Example:* `"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9"` | No |
| threeDSReqPriorAuthMethod | string | Mechanism used by the Cardholder to previously authenticate to the 3DS Requestor. Valid values are 01 through 99.<br>*Example:* `"01"` | No |
| threeDSReqPriorAuthTimestamp | string | Date and time in UTC of the prior cardholder authentication<br>*Example:* `"202301151430"` | No |

#### RetrieveSupplierResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| details | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Populated on validation errors. | No |
| requestId | string | Echo of requestId from the request.<br>*Example:* `"a1a8aee1-3cd5-4806-ac02-b7ee70acd3d2"` | Yes |
| statusCode | string | Status code.<br>*Example:* `"SV-INFO-2000"` | Yes |
| isValidated | string, <br>**Available values:** "true", "false" | Whether the given acquirer BIN/CAID combination is validated for this buyer-supplier relationship. Returns `"false"` without a GMR lookup if the supplier has been untrusted. <br>*Enum:* `"true"`, `"false"`<br>*Example:* `"true"` | Yes |
| statusMessage | string | Status message.<br>*Example:* `"Success"` | Yes |

#### AuthRecordMerchantInfo Schema

Merchant information for the transaction

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AcquirerId | string | AcquirerID for the merchant performing the purchase request<br>*Example:* `"ACQ123456"` | No |
| MerchantId | string | MerchantId for the merchant performing the purchase request<br>*Example:* `"MERCH123456"` | No |
| MerchantURL | string | URL or App Name for the merchant performing the purchase request<br>*Example:* `"https://www.examplemerchant.com"` | No |
| MerchantName | string | Merchant name for the merchant performing the purchase request<br>*Example:* `"Example Merchant Inc."` | No |
| AcquirerCountryCode | string | Country code of the Acquirer. ISO 3166-1 Numeric format<br>*Example:* `"840"` | No |
| MerchantCountryCode | string | Country code of the merchant<br>*Example:* `"840"` | No |
| MerchantCategoryCode | string | Code used to describe the merchant's type of business product or service<br>*Example:* `"5411"` | No |
| MerchantAppRedirectURL | string | Merchant app declaring their URL within the CReq message so that the Authentication app can call the Merchant app after OOB authentication has occurred. Each transaction requires a unique Transaction ID by using the SDK Transaction ID. VCAS will validate the value to ensure it contains a scheme which will route the authentication app to the associated merchant app<br>*Example:* `"merchantScheme://appName?transID=b2385523-a66c-4907-ac3c-91848e8c0067"` | No |

#### CreateRuleStructureData Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rule | object | Specify all the rules to be applied on the card. Refer to <a href='docs-rule-codes'>Rule details</a> to find the rule details and request structure. | Yes |

#### TrustedMerchantRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TrustedMerchantRequest | { **"buyerId"**: string, **"issuerId"**: string, **"messageId"**: string, **"buyerSupplierId"**: string } & { **"caid"**: string, **"acquirerBin"**: string, **"contactInfo"**: { **"city"**: string, **"state"**: string, **"zipCode"**: string, **"countryCode"**: string, **"addressLine1"**: string, **"addressLine2"**: string, **"addressLine3"**: string, **"supplierName"**: string } } |  |  |

#### ErrorDetail-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorCode | string | System-defined error code.<br>*Example:* `"SV-ERR-4001"` | Yes |
| errorMessage | string | Human-readable error description.<br>*Example:* `"requestId is missing or empty"` | Yes |

#### UserMappingUpdate Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| endDate | date | New end date in YYYY-MM-DD format. Optional - if not provided, existing value is retained.  If provided without timezone, existing timezone is used for validation.  | No |
| timezone | string | New timezone. Optional - if not provided, existing value is retained. If provided without  endDate, the existing endDate value is kept but associated with the new timezone. <br>*Example:* `"Asia/Delhi"` | No |
| userMappingId | string (uuid) | User mapping ID to update<br>*Example:* `"ee355a5b-3ea1-4a83-ac7c-2112c3d41560"` | Yes |
| authenticationMethod | string, <br>**Available values:** "OTP", "BIOMETRIC" | New authentication method. Optional - if not provided, existing value is retained.<br>*Enum:* `"OTP"`, `"BIOMETRIC"`<br>*Example:* `"OTP"` | No |

#### MerchantAdditionalData Schema

Additional data from Merchants that may be available on EMV 3DS transactions

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PreorderDate | string | Expected date merchandise is available<br>*Example:* `"20240315"` | No |
| GiftCardCount | string | Total count of individual prepaid or gift cards/codes purchased<br>*Example:* `"01"` | No |
| GiftCardAmount | string | For a gift card, this is the purchase amount, represented in raw amount<br>*Example:* `"1000"` | No |
| GiftCardCurrency | string | ISO 4217 3-digit numeric standard<br>*Example:* `"840"` | No |
| DeliveryTimeFrame | string, <br>**Available values:** "ElectronicDelivery", "SameDayShipping", "OvernightShipping", "TwoOrMoreDaysShipping" | Delivery timeframe<br>*Enum:* `"ElectronicDelivery"`, `"SameDayShipping"`, `"OvernightShipping"`, `"TwoOrMoreDaysShipping"`<br>*Example:* `"ElectronicDelivery"` | No |
| ShippingIndicator | string, <br>**Available values:** "ShipToBillingAddress", "ShipToVerifiedAddress", "ShipToOtherAddress", "ShipToStore", "DigitalGoods", "TravelOrEventTickets", "Other" | Indicates shipping method chosen for the transaction<br>*Enum:* `"ShipToBillingAddress"`, `"ShipToVerifiedAddress"`, `"ShipToOtherAddress"`, `"ShipToStore"`, `"DigitalGoods"`, `"TravelOrEventTickets"`, `"Other"`<br>*Example:* `"ShipToBillingAddress"` | No |
| DeliveryEmailAddress | string | Email address where merchandise was delivered<br>*Example:* `"xyz@xyz.com"` | No |
| ReorderItemsIndicator | string, <br>**Available values:** "FirstTime", "Reordered" | Indicates whether the cardholder ordered previously<br>*Enum:* `"FirstTime"`, `"Reordered"`<br>*Example:* `"FirstTime"` | No |
| PreorderPurchaseIndicator | string, <br>**Available values:** "MerchandiseAvailable", "FutureAvailability" | Indicates purchase with future availability<br>*Enum:* `"MerchandiseAvailable"`, `"FutureAvailability"`<br>*Example:* `"MerchandiseAvailable"` | No |

#### AuthRecordTransactionInfo Schema

Transaction information for the authentication request

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Channel | string, <br>**Available values:** "WEB", "APP", "MWEB", "THREERI" | Channel through which transaction is initiated<br>*Enum:* `"WEB"`, `"APP"`, `"MWEB"`, `"THREERI"`<br>*Example:* `"WEB"` | No |
| DeviceInfo | { **"IP"**: string, **"Locale"**: string, **"Latitude"**: string, **"Platform"**: string, **"SDKAppId"**: string, **"Longitude"**: string, **"UserAgent"**: string, **"DeviceName"**: string, **"DeviceModel"**: string, **"BrowserWidth"**: string, **"AdvertisingId"**: string, **"BrowserLanguage"**: string, **"BrowserTimeZone"**: string, **"ScreenResolution"**: string, **"BrowserColorDepth"**: string, **"BrowserJavaEnabled"**: string, **"DeviceExtendedData"**: string, **"BrowserAcceptHeader"**: string, **"BrowserScreenHeight"**: string, **"OperatingSystemName"**: string, **"OperatingSystemVersion"**: string, **"BrowserJavascriptEnabled"**: boolean } | An object containing device information from the transaction | No |
| FlowStatus | string, <br>**Available values:** "Fully Authenticated", "Not Authenticated", "Not Authenticated with Feedback", "Attempts", "Merchant Cancelled", "Cardholder Cancelled", "Incomplete", "Unavailable", "Rejected", "Informational Only" | VCAS internal description of the status of the transaction at the time the transaction was completed<br>*Enum:* `"Fully Authenticated"`, `"Not Authenticated"`, `"Not Authenticated with Feedback"`, `"Attempts"`, `"Merchant Cancelled"`, `"Cardholder Cancelled"`, `"Incomplete"`, `"Unavailable"`, `"Rejected"`, `"Informational Only"`<br>*Example:* `"Fully Authenticated"` | No |
| PaymentInfo | { **"CardType"**: string, <br>**Available values:** "Credit", "Debit", "Not Applicable", **"CardNumber"**: string, **"CardExpiryYear"**: string, **"CardHolderName"**: string, **"CardExpiryMonth"**: string } | Payment information object containing cardholder payment details | No |
| ReasonCodes | { **"Risk"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"StepUp"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"Validate"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string }, **"InitiateAction"**: { **"ReasonCode"**: string, **"ReasonDescription"**: string } } | An object containing Reason Codes for various steps of the transaction | No |
| AddressMatch | string, <br>**Available values:** "Y", "N" | Shipping Address matches the billing address. Y = shipping and billing address are the same, N = shipping and billing addresses are different<br>*Enum:* `"Y"`, `"N"`<br>*Example:* `"Y"` | No |
| ConsumerInfo | { **"WorkNumber"**: string, **"PhoneNumber"**: string, **"EmailAddress"**: string, **"MobileNumber"**: string } | An object containing additional consumer information | No |
| PurchaseType | string, <br>**Available values:** "GoodsOrService", "CheckAcceptance", "AccountFunding", "QuasiCash", "PrepaidActivation" | Type of purchase being authenticated<br>*Enum:* `"GoodsOrService"`, `"CheckAcceptance"`, `"AccountFunding"`, `"QuasiCash"`, `"PrepaidActivation"`<br>*Example:* `"GoodsOrService"` | No |
| RuleTriggered | string | Name of Rule triggered during risk processing<br>*Example:* `"HighRiskTransaction"` | No |
| VcasPanStatus | string | Value comes from the VCAS PaymentInfo.CardStatus field on the ConsumerInfo object<br>*Example:* `"ACTIVE"` | No |
| BillingAddress | { **"Region"**: string, **"Address1"**: string, **"Address2"**: string, **"Address3"**: string, **"LastName"**: string, **"Locality"**: string, **"FirstName"**: string, **"MiddleName"**: string, **"PostalCode"**: string, **"CountryCode"**: string } | An object containing Billing Address | No |
| MandatedRegion | string, <br>**Available values:** "EEA", "NONE", "UNKNOWN" | A value describing the region in which mandates may apply to the current transaction<br>*Enum:* `"EEA"`, `"NONE"`, `"UNKNOWN"`<br>*Example:* `"NONE"` | No |
| ChallengeCancel | string | Indicator informing the ACS and the DS that the authentication has been canceled. Value sent from the VCAS ChallengeCancel field on the RReq message if the transaction was challenged<br>*Example:* `"01"` | No |
| ShippingAddress | { **"Region"**: string, **"Address1"**: string, **"Address2"**: string, **"Address3"**: string, **"LastName"**: string, **"Locality"**: string, **"FirstName"**: string, **"MiddleName"**: string, **"PostalCode"**: string, **"CountryCode"**: string } | An object containing Shipping Address | No |
| TransactionType | string, <br>**Available values:** "Purchase", "CardAdd" | Type of transaction<br>*Enum:* `"Purchase"`, `"CardAdd"`<br>*Example:* `"Purchase"` | No |
| RiskProviderInfo | { **"Name"**: string, <br>**Available values:** "ThreatMetrix", **"DeviceId"**: string, **"ProviderId"**: string } | An object containing the Risk Provider used for the current transaction along with session information | No |
| TransactionAmount | number | Transaction Amount<br>*Example:* `1000` | No |
| ConsumerWalletInfo | { **"Provider"**: string, **"WalletAge"**: long, **"PaymentCardAge"**: long } | An object containing consumer wallet information | No |
| TransactionCurrency | string | ISO 4217; 3-digit numeric standard<br>*Example:* `"840"` | No |
| TransactionExponent | integer | Exponent for formatting the given currency ISO 4217 code<br>*Example:* `2` | No |
| TransactionAmountUSD | number | Transaction Amount in USD<br>*Example:* `1000` | No |
| TransactionTimeStamp | string | Transaction timestamp in UTC per ISO 8601 UTC<br>*Example:* `"2019-03-21T20:55:49.000Z"` | No |
| MerchantAdditionalData | { **"PreorderDate"**: string, **"GiftCardCount"**: string, **"GiftCardAmount"**: string, **"GiftCardCurrency"**: string, **"DeliveryTimeFrame"**: string, <br>**Available values:** "ElectronicDelivery", "SameDayShipping", "OvernightShipping", "TwoOrMoreDaysShipping", **"ShippingIndicator"**: string, <br>**Available values:** "ShipToBillingAddress", "ShipToVerifiedAddress", "ShipToOtherAddress", "ShipToStore", "DigitalGoods", "TravelOrEventTickets", "Other", **"DeliveryEmailAddress"**: string, **"ReorderItemsIndicator"**: string, <br>**Available values:** "FirstTime", "Reordered", **"PreorderPurchaseIndicator"**: string, <br>**Available values:** "MerchandiseAvailable", "FutureAvailability" } | Additional data from Merchants that may be available on EMV 3DS transactions | No |

#### ErrorDetail-2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorCode | string | Specific error code for this validation failure<br>*Example:* `"VCMRS-CDS-ERR-4019"` | Yes |
| errorMessage | string | Detailed error message<br>*Example:* `"Field [clientId] has invalid value"` | Yes |

#### DeleteCompanyModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |

#### DeviceInfo Schema

An object containing device information from the transaction

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| IP | string | IP address of the device<br>*Example:* `"192.168.1.100"` | No |
| Locale | string | Device Locale from the browser header or from the app's language settings. This value can be a single locale value or multiple values concatenated with commas. In EMV 3DS this is not available due to new flows so this will be a single language value following BCP 47 format. Examples: en-US, en,es-PE;q=0.9,es;q=0.8<br>*Example:* `"en-US"` | No |
| Latitude | string | Latitude of the device based on geolocation or IP Address<br>*Example:* `"37.7749"` | No |
| Platform | string | Platform of the device. Example, Android, iOS<br>*Example:* `"iOS"` | No |
| SDKAppId | string | Universally Unique ID created upon all installations and updates of the 3DS Requestor App on a consumer device<br>*Example:* `"a1b2c3d4-e5f6-47a7-b8c9-d0e1f2a3b4c5"` | No |
| Longitude | string | Longitude of the device based on geolocation or IP Address<br>*Example:* `"-122.4194"` | No |
| UserAgent | string | User Agent for browser or Device Identifier for InApp purchase<br>*Example:* `"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"` | No |
| DeviceName | string | User assigned device name<br>*Example:* `"John's iPhone"` | No |
| DeviceModel | string | Mobile device manufacturer and model<br>*Example:* `"iPhone 13 Pro"` | No |
| BrowserWidth | string | Width of cardholder's screen in pixels<br>*Example:* `"1920"` | No |
| AdvertisingId | string | Unique ID available for advertising and fraud detection purposes from the Merchant native app<br>*Example:* `"12345678-1234-1234-1234-123456789012"` | No |
| BrowserLanguage | string | Browser language returned from navigator language property<br>*Example:* `"en-US"` | No |
| BrowserTimeZone | string | Time difference between UTC time and the cardholder's browser local time, in minutes<br>*Example:* `"-300"` | No |
| ScreenResolution | string | Pixel width and height. Example, 1080x1920<br>*Example:* `"1080x1920"` | No |
| BrowserColorDepth | string | Value representing the bit depth of the color palette<br>*Example:* `"24"` | No |
| BrowserJavaEnabled | string | Indicates whether the browser can execute Java<br>*Example:* `"false"` | No |
| DeviceExtendedData | string | Base64url encoded JSON Object. Device information gathered by 3DS SDK from a consumer device<br>*Example:* `"eyJkZXZpY2VJbmZvIjp7Im1vZGVsIjoiaVBob25lMTMifX0="` | No |
| BrowserAcceptHeader | string | Raw HTTP Accept header from the browser<br>*Example:* `"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"` | No |
| BrowserScreenHeight | string | Height of cardholder's screen in pixels<br>*Example:* `"1080"` | No |
| OperatingSystemName | string | Name of the device operating system<br>*Example:* `"iOS"` | No |
| OperatingSystemVersion | string | Version of the device operating system<br>*Example:* `"15.4.1"` | No |
| BrowserJavascriptEnabled | boolean | Indicates whether the browser can execute javascript<br>*Example:* `true` | No |

#### AuthRecordResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Error | { **"Description"**: string, **"ReferenceNumber"**: string } |  | No |
| Status | string, <br>**Available values:** "SUCCESS", "FAILURE", "ERROR" | Status of the authentication record processing.<br>*Enum:* `"SUCCESS"`, `"FAILURE"`, `"ERROR"`<br>*Example:* `"SUCCESS"` | Yes |

#### ContactInfo Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| city | string | City cannot exceed 50 characters | No |
| state | string | State cannot exceed 27 characters | No |
| zipCode | string | Postal or ZIP code cannot exceed 30 characters | No |
| countryCode | string | Country Code must be in 3-digit ISO format | Yes |
| addressLine1 | string | AddressLine1 cannot exceed 80 characters | No |
| addressLine2 | string | AddressLine2 cannot exceed 40 characters | No |
| addressLine3 | string | AddressLine3 cannot exceed 30 characters | No |
| supplierName | string | Name of the supplier. SupplierName cannot exceed 50 characters | Yes |

#### UpdateUserMappingSuccessResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "success" | Processing status<br>*Enum:* `"success"`<br>*Example:* `"success"` | Yes |
| statusCode | string | Success status code<br>*Example:* `"VCMRS-CDS-INFO-2003"` | Yes |
| statusMessage | string | Success message<br>*Example:* `"Successfully updated user mapping record."` | Yes |
| userMappingId | string (uuid) | User mapping ID that was updated<br>*Example:* `"ee355a5b-3ea1-4a83-ac7c-2112c3d41560"` | Yes |

#### CardholderSelectionInfo Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Name | string | Cardholder name<br>*Example:* `"John Doe"` | No |
| Type | string, <br>**Available values:** "P", "S" | Cardholder type<br>*Enum:* `"P"`, `"S"`<br>*Example:* `"P"` | No |

#### GetCompanySuccessResponse Schema

Response  to fetch company details.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"Accounts"**: [ { **"expDate"**: string, **"isToken"**: boolean, **"serviceKey"**: string, **"accountLast4"**: string, **"cardholderLastName"**: string, **"cardholderFirstName"**: string } ], **"companyId"**: string, **"issuerBid"**: string, **"companyName"**: string, **"portfolioId"**: string, **"contactEmail"**: string, **"contactPhone"**: string, **"totalAccounts"**: string } | Response data to fetch company details. | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### AuthRecordExtensionData Schema

Object containing transaction extension information

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ACSRBA | { **"Score"**: string, **"Status"**: string, **"Decision"**: string, **"ReasonCode1"**: string, **"ReasonCode2"**: string } | Mastercard risk analysis provided by the Mastercard Directory Server. The ADX request needs to include ACSRBA object fields in order for an issuer to receive the Mastercard risk-based extension data. Refer to the Mastercard program guide for more information. | No |
| DAFExtension | { **"Version"**: string, **"DAFAdvice"**: string, **"AuthPayCredStatus"**: string, <br>**Available values:** "Y", "N", "U", "B", "I", **"AuthPayProcessReqInd"**: string } | An AReq extension which indicates that the transaction is to be considered for DAF (Digital Authentication Framework) eligibility | No |
| EMVPaymentToken | { **"Version"**: string, **"TokenRequestorId"**: string, **"TokenAdditionalData"**: { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string }, **"TokenStatusIndicator"**: string } | Data provided with the authentication indicating the card number was tokenized | No |
| VisaPaymentTokenExtension | { **"Token"**: string, **"Version"**: string, **"TokenCryptogram"**: string, **"TokenRequestorId"**: string, **"TokenAdditionalData"**: { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string }, **"TokenAssuranceMethod"**: string, **"TokenStatusIndicator"**: string, <br>**Available values:** "A", "I", "S", "D", "P", **"TokenCryptogramValidityIndicator"**: string, <br>**Available values:** "01", "02", "03" } | An extension which passes basic validation rules of an account number | No |

#### TransactionItem Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| mccCode | string | Merchant Category Code.  | No |
| actionText | string | Indicates if the transaction was declined or approved.  | No |
| billerAmount | string | Transaction amount in Issuer currency.  | No |
| currencyCode | string | Currency code in which the transaction was authorized.  | No |
| merchantName | string | Merchant name at which the transaction was processed.  | No |
| transactionId | string | Unique identifier for the transaction.  | No |
| billerCurrency | string | Transaction currency code in Issuer currency.  | No |
| cardAcceptorId | string | Indicates Card Acceptor Id  | No |
| triggerTypeCode | [ string ] | VPC specific rule code due to which the transaction was declined/approved.  | No |
| triggerTypeText | [ string ] | Describes the VPC specific rule code due to which the transaction was declined/approved.  | No |
| merchantLocation | string | Merchant location where the transaction was processed.  | No |
| transactionAmount | string | Amount in transaction currency that was authorized.  | No |
| transactionTimeStamp | string | Format: yyyy-mm-dd hh:mm:ss.xxx     Example: 2020-08-21 10:51:31.000          Timestamp in GMT when the transaction was processed. <br>*Example:* `"2023-01-15 14:32:45.000"` | No |

#### RiskProviderInfo Schema

An object containing the Risk Provider used for the current transaction along with session information

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Name | string, <br>**Available values:** "ThreatMetrix" | Device Profiling and Risk Engine Provider<br>*Enum:* `"ThreatMetrix"`<br>*Example:* `"ThreatMetrix"` | No |
| DeviceId | string | DeviceId can be used to identify risky or good cardholder behavior<br>*Example:* `"device-fingerprint-abc123xyz"` | No |
| ProviderId | string | Risk Provider transaction reference ID<br>*Example:* `"TM-SESSION-12345678"` | No |

#### AdditionalRiskResultInfo Schema

Object containing additional risk result information

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| IPVelocity | string | The number of times VCAS or other risk provider has seen the same IP address within a given timespan. By default, the timespan is set to 10 minutes<br>*Example:* `"3"` | No |
| RiskIndicator | string | The Risk Indicator value is set during risk or challenge flows to indicate the risk or challenge type. The value is then used in the construction of certain Authentication Values; i.e. Visa CAVV Usage 3 Version 7 or Mastercard Enhanced IAV SPA2<br>*Example:* `"01"` | No |
| DeviceIDVelocity | string | The number of times VCAS or other risk provider has seen the same DeviceID within a given timespan. By default, the timespan is set to 10 minutes<br>*Example:* `"5"` | No |

#### CreateUserMappingCallbackPayload Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### ErrorPayload Schema

Error payload containing detailed error information. This object is wrapped in the 'error' property of ErrorResponse.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code | string | Error code identifying the type of error. Common codes: VCMRS-CDS-ERR-4000 (validation failed), VCMRS-CDS-ERR-5000 (internal error)<br>*Example:* `"VCMRS-CDS-ERR-4000"` | Yes |
| details | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Array of detailed error information. Each element describes a specific validation failure or error condition. May be empty for some error types. | Yes |
| message | string | Human-readable error message<br>*Example:* `"Request validation failed."` | Yes |
| requestId | string (uuid) | Correlation ID for the failed request<br>*Example:* `"0815aca7-ae8c-419d-996d-dc1de95de38e"` | Yes |

#### UserMapping Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| userId | string | User identifier within the company. Alphanumeric with underscores, dots, and hyphens allowed.<br>*Example:* `"pentestuser1"` | Yes |
| account | string | Account number. Must be 13-19 digits. This value is encrypted at rest.<br>*Example:* `"4000000000000000"` | Yes |
| endDate | date | End date for the user mapping in YYYY-MM-DD format. Must be a current or future date.  Maximum year is 2099. The date is validated against the specified timezone (or UTC if  timezone is not provided).  | Yes |
| sequence | string | Unique sequence number for this mapping within the request. Must be between 1 and 250.  Each sequence must be unique within a single request. <br>*Example:* `"1"` | Yes |
| timezone | string | IANA timezone identifier for end date validation. Optional field. If not provided,  UTC is used. Examples: America/New_York, Europe/London, Asia/Kolkata. <br>*Example:* `"Asia/Kolkata"` | No |
| companyId | string | Company identifier. Alphanumeric with underscores, dots, and hyphens allowed.<br>*Example:* `"VisaPentest1"` | Yes |
| accountType | string, <br>**Available values:** "PLASTIC", "VIRTUAL", "TOKEN", "FUNDING", "PAN" | Type of account. Valid values: PLASTIC (physical card), VIRTUAL (virtual card number),  TOKEN (tokenized account), FUNDING (funding account), PAN (primary account number). <br>*Enum:* `"PLASTIC"`, `"VIRTUAL"`, `"TOKEN"`, `"FUNDING"`, `"PAN"`<br>*Example:* `"VIRTUAL"` | Yes |
| accountPoolId | string | Account pool identifier or any identifier that helps map the card to its funding account. Alphanumeric only, 1-25 characters. Optional field.<br>*Example:* `"4000900010"` | No |
| authenticationMethod | string, <br>**Available values:** "OTP", "BIOMETRIC" | Authentication method for the user. Valid values: OTP (one-time password),  BIOMETRIC (fingerprint, face recognition, etc.). <br>*Enum:* `"OTP"`, `"BIOMETRIC"`<br>*Example:* `"OTP"` | Yes |

#### DeleteCompanySuccessResponse Schema

Response for company deletion.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"companyId"**: string } | Response data for successful company deletion. | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### GetRuleSuggestionsSuccessResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| ruleSetId | string | Generated when user prompt results in rules JSON generation. | Yes |
| actionRequired | string | This is used to let you know whether human intervention is required. Accepted values include "true" and "false". | No |
| setRulesRequest | { **"rules"**: [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ], **"endDate"**: string, **"timezone"**: string, <br>**Default:** GMT Standard Time, **"startDate"**: string, **"ruleCurrency"**: string, **"mcgRuleAction"**: string, <br>**Available values:** "ALLOW", "BLOCK" } |  | No |
| validationErrors | { **"errorCode"**: string, **"errorMessage"**: string } |  | No |

#### SetControlData Schema

Response data for controls deletion.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| ruleCount | string | Count of the rule set on the account. | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding contact. This message is mapped with the statusMessageCode. | Yes |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific Status message code indicating the status of the corresponding contact. | Yes |

#### Rule Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code | string | Rule code (e.g., SPV, AIR, etc.) | Yes |
| policyDetails | [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ] |  | No |
| velocityDetails | { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } | Spend Velocity Detais only needed if rule code is SPV | No |

#### UpdateMerchantResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| messageId | string | Unique identifier which was sent in the request | No |
| statusCode | string | Status code of the response | No |
| statusDescription | string | Status description of the response | No |
| supplierTrustStatusInd | boolean | Indicates if the Supplier is trusted | No |

#### VisaPaymentToken Schema

An extension which passes basic validation rules of an account number

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Token | string | Payment token used to initiate the EMV 3DS transaction<br>*Example:* `"4000000000000000"` | No |
| Version | string | Version number of the token message extension<br>*Example:* `"1.0"` | No |
| TokenCryptogram | string | A cryptogram, containing a transaction-unique value<br>*Example:* `"AAABBIIFmAAAAAAAAAAAAAA="` | No |
| TokenRequestorId | string | A value that identifies each unique combination of Token Requestor and Token Domain(s) for a given Token Service Provider<br>*Example:* `"12345678901"` | No |
| TokenAdditionalData | { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string } |  | No |
| TokenAssuranceMethod | string | An updatable value that allows the Token Service Provider to communicate the ID&V performed<br>*Example:* `"01"` | No |
| TokenStatusIndicator | string, <br>**Available values:** "A", "I", "S", "D", "P" | Identifies the status of the Payment Token<br>*Enum:* `"A"`, `"I"`, `"S"`, `"D"`, `"P"`<br>*Example:* `"A"` | No |
| TokenCryptogramValidityIndicator | string, <br>**Available values:** "01", "02", "03" | Identifies if the Token Cryptogram has been verified and the outcome of that verification<br>*Enum:* `"01"`, `"02"`, `"03"`<br>*Example:* `"01"` | No |

#### CompanyAccounts Schema

Account summary data to be rendered in company details.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| expDate | string | Expiration date of the account. | Yes |
| isToken | boolean | Indicates if the account is Visa pseudo account. | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| cardholderLastName | string | Cardholder’s last name. | Yes |
| cardholderFirstName | string | Cardholder’s first name. | Yes |

#### GetTransactionHistorySuccessResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"transactions"**: [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"cardAcceptorId"**: string, **"triggerTypeCode"**: [ string ], **"triggerTypeText"**: [ string ], **"merchantLocation"**: string, **"transactionAmount"**: string, **"transactionTimeStamp"**: string } ], **"isLastDataSet"**: boolean } |  | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode.  | Yes |
| requestId | string | Unique identifier sent in the request.  | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code).  | Yes |

#### BillingAddress Schema

An object containing Billing Address

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Region | string | State, Province, Territory, etc.<br>*Example:* `"CA"` | No |
| Address1 | string | Address line 1<br>*Example:* `"123 Main Street"` | No |
| Address2 | string | Address line 2<br>*Example:* `"Apt 4B"` | No |
| Address3 | string | Address line 3<br>*Example:* `"Building C"` | No |
| LastName | string | Last name for the address<br>*Example:* `"Smith"` | No |
| Locality | string | City, Town, etc.<br>*Example:* `"San Francisco"` | No |
| FirstName | string | First name for the address<br>*Example:* `"John"` | No |
| MiddleName | string | Middle name for the address<br>*Example:* `"Michael"` | No |
| PostalCode | string | ZIP or other postal code<br>*Example:* `"94105"` | No |
| CountryCode | string | Country of the billing address. ISO 3166-1 numeric three-digit country code<br>*Example:* `"840"` | No |

#### Rule-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| code | string | Rule code (e.g., SPV, AIR, etc.) | Yes |
| policyDetails | [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ] |  | No |
| velocityDetails | { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } | Spend Velocity Details only needed if rule code is SPV. | No |

#### CreateCompanyModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| companyName | string | Name of the company to be enrolled. | Yes |
| accountRange | string | Example: 400000000<br><br>First 9 digit of any account number that will be added in the company and used to set controls. This value is used to determine the portfolio of the company. <br><br>Note: Applicable account range(s) should be configured during VPC implementation prior to use. | Yes |
| contactEmail | string | Expected value: Email address. <br><br>Contact email address of the company owner/admin. | Yes |
| contactPhone | string | Exepected value: Phone number with dialing code. <br><br>Default value: Null<br><br>Contact phone number of the company owner/admin. | No |

#### DeleteControlsSuccessResponse-1 Schema

Response for controls deletion from accounts.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"accountsStatus"**: [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } | Response data for Set Controls. | No |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### GetRuleSuggestionsSuccessResponse-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| ruleSetId | string | Generated when user prompt results in rules JSON generation. | Yes |
| actionRequired | string | This is used to let you know whether human intervention is required. Accepted values include "true" and "false". | No |
| setRulesRequest | { **"rules"**: [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ], **"endDate"**: string, **"timezone"**: string, <br>**Default:** GMT Standard Time, **"startDate"**: string, **"ruleCurrency"**: string, **"accountNumber"**: string, **"mcgRuleAction"**: string, <br>**Available values:** "ALLOW", "BLOCK", **"tokenReferenceId"**: string } |  | No |
| validationErrors | { **"errorCode"**: string, **"errorMessage"**: string } |  | No |

#### TransactionInfo Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Channel | string, <br>**Available values:** "WEB", "APP", "M_WEB", "THREERI" | Channel through which the transaction is initiated<br>*Enum:* `"WEB"`, `"APP"`, `"M_WEB"`, `"THREERI"`<br>*Example:* `"WEB"` | No |
| MandatedRegion | string, <br>**Available values:** "EEA", "NONE", "UNKNOWN" | A value describing the region in which mandates may apply<br>*Enum:* `"EEA"`, `"NONE"`, `"UNKNOWN"`<br>*Example:* `"EEA"` | No |
| TransactionType | string, <br>**Available values:** "Purchase", "CardAdd" | Type of transaction<br>*Enum:* `"Purchase"`, `"CardAdd"`<br>*Example:* `"Purchase"` | No |
| TransactionAmount | number | Transaction amount<br>*Example:* `100.5` | No |
| TransactionCurrency | string | ISO 4217 3-digit numeric currency code<br>*Example:* `"840"` | No |
| TransactionExponent | integer | Exponent for formatting the transaction currency<br>*Example:* `2` | No |
| TransactionTimeStamp | string | ISO 8601 datetime with optional milliseconds (e.g. 2024-01-15T10:30:00.000Z)<br>*Example:* `"2019-03-21T20:55:49.000Z"` | No |

#### GetContact Schema

Contact data in Get Contact API response.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| isHTML | boolean | Indicates the format of the text in the email body is HTML. Else, it will be text. Applies only for contact type email. | No |
| contactType | string | Indicates the type of the contact (Email/Mobile). | Yes |
| countryCode | string | Provides the country to which the mobile number belongs. Applies only for contact type mobile. | No |
| contactValue | string | Provides the contact value (email address/ phone number) associated with the card. | Yes |
| languageCode | string | Provides the language in which the notification will be sent. | Yes |

#### DeleteControlsSuccessResponse Schema

Response for controls deletion from accounts.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |
| accountsStatus | [ { **"status"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] |  | Yes |

#### UpdateSupplierResponse-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| details | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Populated on validation errors. | No |
| requestId | string | Echo of requestId from the request.<br>*Example:* `"b2b9bee2-4de6-5917-bd13-c8ff81bde4e3"` | Yes |
| statusCode | string | Status code.<br>*Example:* `"SV-INFO-2000"` | Yes |
| statusMessage | string | Status message.<br>*Example:* `"Success"` | Yes |

#### UpdateSupplierResponse-2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| details | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Populated on validation errors. | No |
| requestId | string | Echo of requestId from the request.<br>*Example:* `"b2b9bee2-4de6-5917-bd13-c8ff81bde4e3"` | Yes |
| statusCode | string | Status code.<br>*Example:* `"SV-INFO-2000"` | Yes |
| statusMessage | string | Status message.<br>*Example:* `"Success"` | Yes |

#### CreateContactData Schema

Response data for Create Contact API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| contactsStatus | [ { **"status"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] |  | Yes |

#### SetControlData-1 Schema

Response data for Set Controls.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accountsStatus | [ { **"status"**: string, **"ruleCount"**: string, **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] |  | Yes |

#### AuthInitiationRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| IssuerId | string | 24-character compact GUID identifying the issuer<br>*Example:* `"507f1f77bcf86cd799439012"` | Yes |
| StepupType | string, <br>**Available values:** "OTP", "BIOMETRIC" | Type of step-up authentication<br>*Enum:* `"OTP"`, `"BIOMETRIC"`<br>*Example:* `"OTP"` | Yes |
| Credentials | [ { **"Id"**: string, **"Text"**: string, **"Type"**: string, <br>**Available values:** "OTPEMAIL", "OTPSMS", "OTPIVR", "KBASINGLE", "BIOMETRIC", "OUTOFBANDOTHER", "OUTOFBANDTOKEN", **"Token"**: string, **"CustomerId"**: string } ] | List of credentials for authentication | No |
| PaymentInfo | { **"CardType"**: string, <br>**Available values:** "Credit", "Debit", "Not Applicable", **"CardNumber"**: string, **"CardExpiryYear"**: string, **"CardHolderName"**: string, **"CardExpiryMonth"**: string } |  | No |
| ProcessorId | string | 24-character compact GUID identifying the processor<br>*Example:* `"507f1f77bcf86cd799439011"` | Yes |
| 3RIIndicator | string | 3RI Indicator<br>*Example:* `"02"` | No |
| MerchantInfo | { **"AcquirerId"**: string, **"MerchantId"**: string, **"MerchantURL"**: string, **"MerchantName"**: string, **"AcquirerCountryCode"**: string, **"MerchantCountryCode"**: string, **"MerchantCategoryCode"**: string, **"MerchantAppRedirectURL"**: string } |  | No |
| CardBrandName | string, <br>**Available values:** "DISCOVER", "VISA", "MASTERCARD", "JCB", "AMEX", "DINERS", "ELO", "UPI", "EFTPOS", "MADA", "MYDEBIT", "TAKAPAY", "ITMX", "JAYWAN" | Name of the card network<br>*Enum:* `"DISCOVER"`, `"VISA"`, `"MASTERCARD"`, `"JCB"`, `"AMEX"`, `"DINERS"`, `"ELO"`, `"UPI"`, `"EFTPOS"`, `"MADA"`, `"MYDEBIT"`, `"TAKAPAY"`, `"ITMX"`, `"JAYWAN"`<br>*Example:* `"VISA"` | No |
| StepupCounter | integer | Counter for step-up authentication attempts<br>*Example:* `0` | No |
| TransactionId | string | 36-character standard GUID for the transaction<br>*Example:* `"550e8400-e29b-41d4-a716-446655440000"` | Yes |
| MessageVersion | string | Version of the message protocol<br>*Example:* `"2.2.0"` | No |
| OOBCallbackUrl | string | URL provided by VCAS for OOB callback<br>*Example:* `"https://oob-callback-api-vcas.visa.com/V1/OOBCallbackValidateStatus"` | No |
| DSTransactionId | string | Directory Server transaction identifier<br>*Example:* `"b2c3d4e5-f6a7-48b8-c9d0-e1f2a3b4c5d6"` | No |
| MessageCategory | string | Category of the message<br>*Example:* `"01"` | No |
| StepupRequestId | string | 36-character standard GUID for the stepup request<br>*Example:* `"550e8400-e29b-41d4-a716-446655440002"` | Yes |
| TransactionInfo | { **"Channel"**: string, <br>**Available values:** "WEB", "APP", "M_WEB", "THREERI", **"MandatedRegion"**: string, <br>**Available values:** "EEA", "NONE", "UNKNOWN", **"TransactionType"**: string, <br>**Available values:** "Purchase", "CardAdd", **"TransactionAmount"**: number, **"TransactionCurrency"**: string, **"TransactionExponent"**: integer, **"TransactionTimeStamp"**: string } |  | No |
| OtpReferenceCode | string | Reference code for OTP<br>*Example:* `"REF123456"` | No |
| RDXMessageVersion | string | RDX message version<br>*Example:* `"2.2.3"` | No |
| VerificationToken | string | Token for verification<br>*Example:* `"123456"` | No |
| ThreeDSRequestorAuthenticationInd | string | 3DS Requestor Authentication Indicator<br>*Example:* `"01"` | No |

#### GetRuleSuggestionsRequest-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| prompt | string | Use case provided in plain (natural language) text | Yes |
| contextId | string | Unique Context ID (Per Session). A unique context ID must be provided for each session. Once a context ID is used and the context is changed, the memory associated with that session is cleared. The same context ID cannot be reused for future sessions. | Yes |
| accountNumber | string | 16 digit account number. | Yes |

#### CreateUserMappingErrorResult-3 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "error" | Processing status<br>*Enum:* `"error"`<br>*Example:* `"error"` | Yes |
| sequence | string | Sequence number from the original request<br>*Example:* `"1"` | Yes |
| statusCode | string | Error status code<br>*Example:* `"VCMRS-CDS-ERR-4000"` | Yes |
| errorDetails | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Detailed error information | Yes |
| statusMessage | string | Error summary message<br>*Example:* `"Error processing user mapping record."` | Yes |

#### CreateAccountData-1 Schema

Response data for Account creation.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding account. This message is mapped with the statusMessageCode. | Yes |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific Status message code indicating the status of the corresponding account. | Yes |

#### AcknowledgementResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "ACCEPTED" | Request acceptance status. Always "ACCEPTED" for successful submission.<br>*Enum:* `"ACCEPTED"`<br>*Example:* `"ACCEPTED"` | Yes |
| requestId | string (uuid) | Unique identifier for this request. Use this ID to poll for status or match with  callback notifications. <br>*Example:* `"d680f5b9-7f5d-49ff-a6e7-c71bff992d19"` | Yes |

#### CreateUserMappingErrorResult-4 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "error" | Processing status<br>*Enum:* `"error"`<br>*Example:* `"error"` | Yes |
| sequence | string | Sequence number from the original request<br>*Example:* `"1"` | Yes |
| statusCode | string | Error status code<br>*Example:* `"VCMRS-CDS-ERR-4000"` | Yes |
| errorDetails | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Detailed error information | Yes |
| statusMessage | string | Error summary message<br>*Example:* `"Error processing user mapping record."` | Yes |

#### DeleteAccountControlsModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accounts | [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |

#### UpdateAccountModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| expYear | string | Expiration year of the card account.<br><br>Note: Only include if expiration date needs to be updated and provide both expMonth and expYear fields in the request. | No |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| expMonth | string | Expiration month of the card account.<br><br>Note: Only include if expiration date needs to be updated and provide both expMonth and expYear fields in the request. | No |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| isBlocked | boolean | Expected value: True/False<br><br>Indicates if the account should be updated as blocked. This will ensure no transactions are allowed on the account. <br><br>Note: Only include if account block status needs to be updated and provide both isBlocked and isControlSuspended fields in the request. | No |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| cardholderLastName | string | Cardholder Last Name.<br><br>Note: Only include if last name needs to be updated. | No |
| isControlSuspended | boolean | Expected value: True/False<br><br>Indicates if the controls on the account should be suspended. This will open up the account for any transaction and there will be no active controls on the account. <br><br>Note: Only include if account control suspend status needs to be updated and provide both isBlocked and isControlSuspended fields in the request. | No |
| cardholderFirstName | string | Cardholder First Name.<br><br>Note: Only include if first name needs to be updated. | No |

#### GetUserMappingResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"7cfa8e33-cd5f-43a3-b98d-4094c55e8c65"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"userId"**: string, **"account"**: string, **"endDate"**: dateTime, **"clientId"**: string, **"timezone"**: string, **"companyId"**: string, **"issuerBid"**: string, **"statusCode"**: string, **"accountType"**: string, <br>**Available values:** "PLASTIC", "VIRTUAL", "TOKEN", "FUNDING", "PAN", **"accountPoolId"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid), **"authenticationMethod"**: string, <br>**Available values:** "OTP", "BIOMETRIC" } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] | Results for each user mapping ID queried | Yes |

#### CreateUserMappingErrorResult-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "error" | Processing status<br>*Enum:* `"error"`<br>*Example:* `"error"` | Yes |
| sequence | string | Sequence number from the original request<br>*Example:* `"1"` | Yes |
| statusCode | string | Error status code<br>*Example:* `"VCMRS-CDS-ERR-4000"` | Yes |
| errorDetails | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Detailed error information | Yes |
| statusMessage | string | Error summary message<br>*Example:* `"Error processing user mapping record."` | Yes |

#### CreateUserMappingErrorResult-2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "error" | Processing status<br>*Enum:* `"error"`<br>*Example:* `"error"` | Yes |
| sequence | string | Sequence number from the original request<br>*Example:* `"1"` | Yes |
| statusCode | string | Error status code<br>*Example:* `"VCMRS-CDS-ERR-4000"` | Yes |
| errorDetails | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Detailed error information | Yes |
| statusMessage | string | Error summary message<br>*Example:* `"Error processing user mapping record."` | Yes |

#### MerchantBinCaidUpdate Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MerchantBinCaidUpdate | { **"caid"**: string, **"acquirerBin"**: string } & { **"acquirerBinCaidTrustStatusInd"**: boolean } |  |  |

#### NotificationItem Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| messages | [ { **"contactType"**: string, **"messageText"**: string } ] |  | No |
| transaction | [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"cardAcceptorId"**: string, **"triggerTypeCode"**: [ string ], **"triggerTypeText"**: [ string ], **"merchantLocation"**: string, **"transactionAmount"**: string, **"transactionTimeStamp"**: string } ] |  | No |
| contactStatus | [ { **"isHTML"**: boolean, **"contact"**: string, **"contactType"**: string, **"countryCode"**: string, **"languageCode"**: string } ] |  | No |

#### RegisterSupplierResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| details | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Populated on validation errors. | No |
| requestId | string | Echo of requestId from the request.<br>*Example:* `"a1a8aee1-3cd5-4806-ac02-b7ee70acd3d2"` | Yes |
| statusCode | string | Status code.<br>*Example:* `"SV-INFO-2000"` | Yes |
| statusMessage | string | Status message.<br>*Example:* `"Success"` | Yes |
| supplierDetails | { **"storeName"**: string, **"supplierCity"**: string or null, **"supplierName"**: string, **"terminalType"**: [ string ] or null, **"supplierState"**: string or null, **"enterpriseName"**: string or null, **"supplierPostalCode"**: string or null, **"supplierCountryCode"**: string or null, **"supplierStreetAddress"**: string or null, **"locationAddressLatitude"**: string or null, **"paymentAcceptanceMethod"**: [ string ] or null, **"locationAddressLongitude"**: string or null } |  | No |
| validatedAcquirerBinCaidCount | string | Total count of acquirer BIN/CAID pairs validated for the given buyerSupplierId.<br>*Example:* `"3"` | No |

#### GetCompanyData Schema

Response data to fetch company details.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Accounts | [ { **"expDate"**: string, **"isToken"**: boolean, **"serviceKey"**: string, **"accountLast4"**: string, **"cardholderLastName"**: string, **"cardholderFirstName"**: string } ] |  | Yes |
| companyId | string | VPC generated Id after successful creation of the company. This Id will be used for all the future requests that are related to this company. | Yes |
| issuerBid | string | Unique value assigned to a bank and is configured in VPC during bank onboarding. | Yes |
| companyName | string | Name of the company. | Yes |
| portfolioId | string | Id indicating the portfolio under which the company is enrolled. Note - Portfolio is a program setup under a bank. | Yes |
| contactEmail | string | Contact email address of the company owner/admin. | Yes |
| contactPhone | string | Contact phone number of the company owner/admin. | No |
| totalAccounts | string | Number of accounts currently enrolled in the company. | Yes |

#### RegisterSupplierResponse-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| details | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Populated on validation errors. | No |
| requestId | string | Echo of requestId from the request.<br>*Example:* `"a1a8aee1-3cd5-4806-ac02-b7ee70acd3d2"` | Yes |
| statusCode | string | Status code.<br>*Example:* `"SV-INFO-2000"` | Yes |
| statusMessage | string | Status message.<br>*Example:* `"Success"` | Yes |
| supplierDetails | { **"storeName"**: string, **"supplierCity"**: string or null, **"supplierName"**: string, **"terminalType"**: [ string ] or null, **"supplierState"**: string or null, **"enterpriseName"**: string or null, **"supplierPostalCode"**: string or null, **"supplierCountryCode"**: string or null, **"supplierStreetAddress"**: string or null, **"locationAddressLatitude"**: string or null, **"paymentAcceptanceMethod"**: [ string ] or null, **"locationAddressLongitude"**: string or null } |  | No |
| validatedAcquirerBinCaidCount | string | Total count of acquirer BIN/CAID pairs validated for the given buyerSupplierId.<br>*Example:* `"3"` | No |

#### RegisterSupplierResponse-2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| details | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Populated on validation errors. | No |
| requestId | string | Echo of requestId from the request.<br>*Example:* `"a1a8aee1-3cd5-4806-ac02-b7ee70acd3d2"` | Yes |
| statusCode | string | Status code.<br>*Example:* `"SV-INFO-2000"` | Yes |
| statusMessage | string | Status message.<br>*Example:* `"Success"` | Yes |
| supplierDetails | { **"storeName"**: string, **"supplierCity"**: string or null, **"supplierName"**: string, **"terminalType"**: [ string ] or null, **"supplierState"**: string or null, **"enterpriseName"**: string or null, **"supplierPostalCode"**: string or null, **"supplierCountryCode"**: string or null, **"supplierStreetAddress"**: string or null, **"locationAddressLatitude"**: string or null, **"paymentAcceptanceMethod"**: [ string ] or null, **"locationAddressLongitude"**: string or null } |  | No |
| validatedAcquirerBinCaidCount | string | Total count of acquirer BIN/CAID pairs validated for the given buyerSupplierId.<br>*Example:* `"3"` | No |

#### GetControlsSuccessResponse Schema

Response for setting controls on accounts.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| account | { **"rules"**: [ { **"rule"**: object } ], **"serviceKey"**: string, **"accountLast4"**: string } | Response data to fetch controls. | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### DeleteContactStatus Schema

Contact response object for Delete Contact API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding contact. This message is mapped with the statusMessageCode. | Yes |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific Status message code indicating the status of the corresponding contact. | Yes |

#### AccountStatusDataForDeleteControls Schema

Response data for account deletion.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding contact. This message is mapped with the statusMessageCode. | Yes |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific Status message code indicating the status of the corresponding contact. | Yes |

#### ErrorResponse-7 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorCode | string | Error code indicating the status of the request (Application specific code). | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| errorMessage | string | Error message describing the request processing status. This message is mapped with the errorCode. | Yes |

#### ErrorResponse-4 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| details | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | One entry per validation failure. | Yes |
| requestId | string | Echo of requestId from the request. May be absent if the request body could not be parsed.<br>*Example:* `"a1a8aee1-3cd5-4806-ac02-b7ee70acd3d2"` | No |
| statusCode | string | Error status code.<br>*Example:* `"SV-ERR-4000"` | Yes |
| statusMessage | string | Error status message.<br>*Example:* `"Request validation failed"` | Yes |

#### TokenAdditionalData Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TokenCharacteristics | string, <br>**Available values:** "01", "02", "03", "05", "06" | Indicates the type of token<br>*Enum:* `"01"`, `"02"`, `"03"`, `"05"`, `"06"`<br>*Example:* `"01"` | No |
| TokenAdditionalDataVersion | string | Indicates the extension version and matches the value provided by the Version field on the Data object<br>*Example:* `"1.0"` | No |

#### ErrorResponse-9 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorCode | string | Message code showing the status of the request (Application specific code).  | Yes |
| requestId | string | Unique identified sent in the request  | Yes |
| errorMessage | string | Message describing the request processing status. This message is mapped with the messageCode.  | Yes |

#### ErrorResponse-8 Schema

Error response for Account Administration APIs.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identified sent in the request | Yes |
| messageCode | string | Message code showing the status of the request (Application specific code). | Yes |

#### DeleteControlData Schema

Response data for account deletion.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding contact. This message is mapped with the statusMessageCode. | Yes |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific Status message code indicating the status of the corresponding contact. | Yes |

#### GetContactModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accounts | [ { **"serviceKey"**: string, **"accountNumber"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |

#### CreateContactModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| contacts | [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |

#### ErrorDetail Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorCode | string | Error code indicating the status of the request (Application specific code)<br>*Example:* `"VCMRS-AVS-ERR-4000"` | Yes |
| errorMessage | string | Error message mapped with the errorCode<br>*Example:* `"Processor ID must be exactly 24 characters long"` | Yes |

#### DeleteUserMappingResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"23cf72a0-c377-4428-a85d-4630ab6a0c56"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"statusCode"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string, **"userMappingId"**: string (uuid) } ] | Results for each user mapping deletion | Yes |

#### CreateUserMappingErrorResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "error" | Processing status<br>*Enum:* `"error"`<br>*Example:* `"error"` | Yes |
| sequence | string | Sequence number from the original request<br>*Example:* `"1"` | Yes |
| statusCode | string | Error status code<br>*Example:* `"VCMRS-CDS-ERR-4000"` | Yes |
| errorDetails | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Detailed error information | Yes |
| statusMessage | string | Error summary message<br>*Example:* `"Error processing user mapping record."` | Yes |

#### MerchantCategoryRange Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| maxMCC | string |  | No |
| minMCC | string |  | No |

#### GetContactDetails Schema

Contacts response object for Get Contact API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| contacts | [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ] |  | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| accountLast4 | string | Last 4 digits of the account number. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding contact. This message is mapped with the statusMessageCode. | Yes |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific Status message code indicating the status of the corresponding contact. | Yes |

#### ErrorResponse-3 Schema

Error response containing error code and message

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorCode | string | Error code identifying the specific error | Yes |
| messageId | string | Unique message identifier from the request | Yes |
| statusCode | string | HTTP status code | Yes |
| errorMessage | string | Human-readable error message | Yes |
| statusDescription | string | Status description | Yes |

#### ErrorResponse-2 Schema

Error response for Company Management APIs.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identified sent in the request | Yes |
| messageCode | string | Message code showing the status of the request (Application specific code). | Yes |

#### UpdateCompanyData Schema

Response data for successful company updation.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| companyId | string | VPC generated Id after successful creation of the company. This Id will be used for all the future requests that are related to this company. <br><br>Note: For update company, the same company ID will be returned as provided in the original Create Company API call. | Yes |

#### ErrorResponse-1 Schema

Error response for company management.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identified sent in the request | Yes |
| messageCode | string | Message code showing the status of the request (Application specific code). | Yes |

#### ReasonCodes Schema

An object containing Reason Codes for various steps of the transaction

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Risk | { **"ReasonCode"**: string, **"ReasonDescription"**: string } | An object containing the ReasonCode for Risk | No |
| StepUp | { **"ReasonCode"**: string, **"ReasonDescription"**: string } | An object containing the ReasonCode for StepUp | No |
| Validate | { **"ReasonCode"**: string, **"ReasonDescription"**: string } | An object containing the ReasonCode for Validate | No |
| InitiateAction | { **"ReasonCode"**: string, **"ReasonDescription"**: string } | An object containing the ReasonCode for InitiateAction | No |

#### AuthLookupRequest Schema

Request body for the auth lookup endpoint. Either PaymentInfo.CardNumber or ExtensionData.VisaPaymentTokenExtension.Token must be present — the request is rejected if neither is provided.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| IssuerId | string | 24-character compact GUID identifying the issuer<br>*Example:* `"507f1f77bcf86cd799439012"` | Yes |
| PaymentInfo | { **"CardType"**: string, <br>**Available values:** "Credit", "Debit", "Not Applicable", **"CardNumber"**: string, **"CardExpiryYear"**: string, **"CardHolderName"**: string, **"CardExpiryMonth"**: string } |  | No |
| ProcessorId | string | 24-character compact GUID identifying the processor<br>*Example:* `"507f1f77bcf86cd799439011"` | Yes |
| 3RIIndicator | string | 3RI (3DS Requestor Initiated) indicator (1-2 digits)<br>*Example:* `"02"` | No |
| DeviceLocale | string | Device locale in BCP 47 format<br>*Example:* `"en-US"` | No |
| MerchantInfo | { **"AcquirerId"**: string, **"MerchantId"**: string, **"MerchantURL"**: string, **"MerchantName"**: string, **"AcquirerCountryCode"**: string, **"MerchantCountryCode"**: string, **"MerchantCategoryCode"**: string, **"MerchantAppRedirectURL"**: string } |  | No |
| StepupReason | string | Stepup reason (uppercase letters, digits, underscores)<br>*Example:* `"RISK_BASED_AUTHENTICATION"` | No |
| CardBrandName | string, <br>**Available values:** "DISCOVER", "VISA", "MASTERCARD", "JCB", "AMEX", "DINERS", "ELO", "UPI", "EFTPOS", "MADA", "MYDEBIT", "TAKAPAY", "ITMX", "JAYWAN" | Name of the card network<br>*Enum:* `"DISCOVER"`, `"VISA"`, `"MASTERCARD"`, `"JCB"`, `"AMEX"`, `"DINERS"`, `"ELO"`, `"UPI"`, `"EFTPOS"`, `"MADA"`, `"MYDEBIT"`, `"TAKAPAY"`, `"ITMX"`, `"JAYWAN"`<br>*Example:* `"VISA"` | No |
| ExtensionData | { **"DAFExtension"**: { **"Version"**: string, **"DAFAdvice"**: string, **"AuthPayCredStatus"**: string, **"AuthPayProcessReqInd"**: string }, **"VisaPaymentTokenExtension"**: { **"Token"**: string, **"Version"**: string, **"TokenCryptogram"**: string, **"TokenRequestorId"**: string, **"TokenAdditionalData"**: { **"TokenCharacteristics"**: string, <br>**Available values:** "01", "02", "03", "05", "06", **"TokenAdditionalDataVersion"**: string }, **"TokenAssuranceMethod"**: string, **"TokenStatusIndicator"**: string, <br>**Available values:** "A", "I", "S", "D", "P", **"TokenCryptogramValidityIndicator"**: string, <br>**Available values:** "01", "02", "03" } } |  | No |
| StepupCounter | integer | Counter for stepup attempts<br>*Example:* `1` | No |
| TransactionId | string | 36-character standard GUID for the transaction<br>*Example:* `"550e8400-e29b-41d4-a716-446655440000"` | Yes |
| MessageVersion | string | Message version in X.Y.Z format<br>*Example:* `"2.1.0"` | No |
| DSTransactionId | string | Directory Server transaction ID<br>*Example:* `"550e8400-e29b-41d4-a716-446655440001"` | No |
| DeviceUserAgent | string | Device user agent<br>*Example:* `"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"` | No |
| MessageCategory | string | Message category (01-99)<br>*Example:* `"01"` | No |
| StepupRequestId | string | 36-character standard GUID for the stepup request<br>*Example:* `"550e8400-e29b-41d4-a716-446655440002"` | Yes |
| TransactionInfo | { **"Channel"**: string, <br>**Available values:** "WEB", "APP", "M_WEB", "THREERI", **"MandatedRegion"**: string, <br>**Available values:** "EEA", "NONE", "UNKNOWN", **"TransactionType"**: string, <br>**Available values:** "Purchase", "CardAdd", **"TransactionAmount"**: number, **"TransactionCurrency"**: string, **"TransactionExponent"**: integer, **"TransactionTimeStamp"**: string } |  | No |
| RDXMessageVersion | string | RDX message version in X.Y.Z format<br>*Example:* `"2.1.0"` | No |
| EmbeddedOOBResponseUrl | string | Embedded out-of-band response URL<br>*Example:* `"https://example.com/oob-response"` | No |
| CardholderSelectionInfo | { **"Name"**: string, **"Type"**: string, <br>**Available values:** "P", "S" } |  | No |
| ThreeDSRequestorAuthenticationInd | string | 3DS Requestor Authentication Indicator (1-2 digits)<br>*Example:* `"01"` | No |

#### DeleteUserMappingRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Client identifier assigned by Visa<br>*Example:* `"fintech_0001"` | Yes |
| issuerBid | string | Bank Identification Number. Must be exactly 8 digits.<br>*Example:* `"10000130"` | Yes |
| userMappingIds | [ string (uuid) ] | Array of user mapping IDs to delete. Maximum 250 IDs per request.<br>*Example:* `["ee355a5b-3ea1-4a83-ac7c-2112c3d41560","7608f55d-10d7-4200-a727-9a4c0333bb98"]` | Yes |
| callbackRequired | boolean | Indicates whether a callback should be sent to the pre-configured callback URL for this clientId upon processing completion.<br>*Example:* `true` | No |

#### GetNotificationHistorySuccessResponse-1 Schema

Success response for Get Notification History API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | No |
| requestId | string | Unique identifier sent in the request. | No |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | No |
| messageCode | string | Message code indicating the status of the request (Application specific code). | No |
| accountLast4 | string | Last 4 digits of the account number. | No |
| isLastDataSet | boolean | Indicates if the result set is the last data set. | No |
| notifications | [ { **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ], **"messages"**: { **"message"**: [ { **"contactType"**: string, **"messageText"**: string } ], **"notificationTimeStamp"**: string }, **"transaction"**: [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"triggerTypeCode"**: string, **"triggerTypeText"**: string, **"merchantLocation"**: string, **"transactionAmount"**: string, **"merchantCountryCode"**: string, **"transactionTimeStamp"**: string } ] } ] |  | No |

#### GetNotificationHistorySuccessResponse-2 Schema

Success response for Get Notification History API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | No |
| requestId | string | Unique identifier sent in the request. | No |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | No |
| messageCode | string | Message code indicating the status of the request (Application specific code). | No |
| accountLast4 | string | Last 4 digits of the account number. | No |
| isLastDataSet | boolean | Indicates if the result set is the last data set. | No |
| notifications | [ { **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ], **"messages"**: { **"message"**: [ { **"contactType"**: string, **"messageText"**: string } ], **"notificationTimeStamp"**: string }, **"transaction"**: [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"triggerTypeCode"**: string, **"triggerTypeText"**: string, **"merchantLocation"**: string, **"transactionAmount"**: string, **"merchantCountryCode"**: string, **"transactionTimeStamp"**: string } ] } ] |  | No |

#### SetSuggestedModifiedRulesSuccessResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| modifiedRulesSuccessResponse | { **"message"**: string, **"requestId"**: string, **"messageCode"**: string } |  | No |

#### GetAccountDetailsRequest Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| issuerBid | string | Bank identifier (Holding Bid) | Yes |
| accountNumber | string | 16 digit account number. | Yes |

#### RulesSuccessResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code showing the status of the request (Application specific code). | Yes |

#### DeleteContactSuccessResponse Schema

Response for Delete contact API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"serviceKey"**: string, **"accountLast4"**: string, **"contactsStatus"**: [ { **"status"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } | Account response data for Delete Contact API. | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### GetRulesSuccessResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rules | [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ] |  | No |
| endDate | date | End Date value must be greater than the Start Date. If the rules were set in the past or for the current date, only then the end date for those rules will be displayed here. The End Date value is required for Spend Velocity (SPV) and Spend Policy Control (SPP) rules. | Yes |
| message | string |  Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| disabled | boolean | Accepted values include "true" and "false"    This flag indicates if the rules were disabled for the account. | No |
| timezone | string, <br>**Default:** GMT Standard Time | ISO time zone     Must contain only characters and be existing time zone in the database.   Please refer to "Master Codes" section for all available timezones. <br>*Example:* `"Eastern Standard Time"` | No |
| requestId | string | Unique identifier sent in the request. | Yes |
| startDate | date |  If the rules were set in the past or for the current date, only then the start date for those rules will be displayed here. | No |
| futureRules | [ { **"code"**: string, **"policyDetails"**: [ { **"rangeType"**: string, **"dayOfTheWeek"**: string, **"spendLimitAmount"**: string, **"merchantCategoryGroups"**: [ string ], **"merchantCategoryRanges"**: [ { **"maxMCC"**: string, **"minMCC"**: string } ], **"accumulatedSpendResetIndicator"**: string } ], **"velocityDetails"**: { **"maxAuth"**: string, **"rangeType"**: string, **"updateFlag"**: string, **"notifyOption"**: string, **"thresholdAmount"**: string, **"spendLimitAmount"**: string, **"consumedAuthCount"**: integer, **"consumedAuthAmount"**: integer } } ] |  | No |
| messageCode | string | Message code indicating the status of the request (Application specific code).  | Yes |
| ruleCurrency | string | Up to 3 digit number. Must be existing currency in the database.     This is the ISO numeric currency code that is to be applied for all amount specific rules. Please refer to Master Codes’ section to find the list of supported currencies and their codes. <br>*Example:* `"840"` | Yes |
| accountNumber | string | 16 digit account number. | Yes |
| mcgRuleAction | string, <br>**Available values:** "ALLOW", "BLOCK" | This is used to identify whether to allow or block a transaction based on the set Merchant Category Group (MCG) rules. The default value for mcgRuleAction is BLOCK.<br>*Enum:* `"ALLOW"`, `"BLOCK"` | No |
| disabledwithBlock | boolean | Accepted values include "true" and "false"    This flag indicates if the account was created with a ‘Block’ status, along with the rules being  disabled. | No |
| futureRulesEndDate | date | End Date value must be greater than the Start Date. If the rules were set in the past or for the current date, only then the end date for those rules will be displayed here. The End Date value is required for Spend Velocity (SPV) and Spend Policy Control (SPP) rules | Yes |
| futureRulesTimezone | string, <br>**Default:** GMT Standard Time | ISO time zone     Must contain only characters and be existing time zone in the database.   Please refer to "Master Codes" section for all available timezones. <br>*Example:* `" Eastern Standard Time"` | No |
| futureRulesStartDate | date | If the rules were set for a future date, only then the start date for those rules will be displayed here | No |
| futureRulesRuleCurrency | string | Up to 3 digit number. Must be existing currency in the database.     This is the ISO numeric currency code that is to be applied for all amount specific rules. Please refer to Master Codes’ section to find the list of supported currencies and their codes. <br>*Example:* `"840"` | Yes |
| futureRulesMcgRuleAction | string, <br>**Available values:** "ALLOW", "BLOCK" | This is used to identify whether to allow or block a transaction based on the set Merchant Category Group (MCG) rules. The default value for mcgRuleAction is BLOCK.<br>*Enum:* `"ALLOW"`, `"BLOCK"` | No |

#### CreateContactModel-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clientId | string | Example: VisaBank_1111<br><br>Unique identifier for an entity (Fintech or bank). This Id will be created at the time of client on-boarding. It will be sent by client in the request body. | Yes |
| contacts | [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string, **"sequenceNumber"**: string } ] |  | Yes |
| companyId | string | Example: 99999999_001_00000167<br>Unique  identifier for a company existing in VPC. This value is provided in the Create Company response. | Yes |
| issuerBid | string | 8 digit number.<br>Example: 99999999<br><br>Unique value assigned to a bank. This Id is configured in VPC during bank onboarding. | Yes |
| requestID | string | Expected value: GUID<br>Example: 62CDD29B-426B-493A-8CF4-2D5BD2308A4B<br><br>Unique identifier to be sent for all requests. This Id will be generated by the client. It will be used for troubleshooting as it uniquely identifies the request. | Yes |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |

#### CreateAccountData Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| sequenceNumber | string | Expected value: A number in the range 0-249. Must start from 0 following other numbers in ascending order.<br><br>This value is used to map the response to the corresponding contact in the request. | Yes |

#### InitiateAction Schema

An object containing the ReasonCode for InitiateAction

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ReasonCode | string | Used by the issuer for informational purposes<br>*Example:* `"INIT001"` | No |
| ReasonDescription | string | Used by the issuer for informational purposes<br>*Example:* `"Transaction initiated successfully"` | No |

#### UpdateCompanySuccessResponse Schema

Response for company updation.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"companyId"**: string } | Response data for successful company updation. | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### SupplierDetails Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| storeName | string | Store name from GMR.<br>*Example:* `"DELTA HOTELS NEW YORK"` | Yes |
| supplierCity | string or null | Supplier city.<br>*Example:* `"NEW YORK"` | No |
| supplierName | string | Supplier name from GMR.<br>*Example:* `"DELTA HOTELS NEW YORK"` | Yes |
| terminalType | [ string ] or null | Terminal types supported by the supplier.<br>*Example:* `["SWIPE","EMV"]` | No |
| supplierState | string or null | Supplier state.<br>*Example:* `"NEW YORK"` | No |
| enterpriseName | string or null | Parent company or enterprise name.<br>*Example:* `"MARRIOTT INTERNATIONAL"` | No |
| supplierPostalCode | string or null | Supplier postal code.<br>*Example:* `"10004"` | No |
| supplierCountryCode | string or null | Supplier country code in 3-digit ISO numeric format.<br>*Example:* `"840"` | No |
| supplierStreetAddress | string or null | Supplier street address.<br>*Example:* `"32 PEARL ST"` | No |
| locationAddressLatitude | string or null | Location latitude.<br>*Example:* `"40.7034"` | No |
| paymentAcceptanceMethod | [ string ] or null | Payment acceptance methods supported by the supplier.<br>*Example:* `["EC","CONTACTLESS"]` | No |
| locationAddressLongitude | string or null | Location longitude.<br>*Example:* `"-74.0135"` | No |

#### Reason Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ReasonCode | string | Reason code<br>*Example:* `"01"` | No |
| ReasonDescription | string | Reason description<br>*Example:* `"Authentication required"` | No |

#### GetNotificationData-1 Schema

Notification data for Get Notification History API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| contacts | [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ] |  | No |
| messages | { **"message"**: [ { **"contactType"**: string, **"messageText"**: string } ], **"notificationTimeStamp"**: string } |  | No |
| transaction | [ { **"mccCode"**: string, **"actionText"**: string, **"billerAmount"**: string, **"currencyCode"**: string, **"merchantName"**: string, **"transactionId"**: string, **"billerCurrency"**: string, **"triggerTypeCode"**: string, **"triggerTypeText"**: string, **"merchantLocation"**: string, **"transactionAmount"**: string, **"merchantCountryCode"**: string, **"transactionTimeStamp"**: string } ] |  | No |

#### UpdateAccountSuccessResponse Schema

Response for Update Account API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"accountStatus"**: { **"serviceKey"**: string, **"accountLast4"**: string } } |  | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### CreateUserMappingSuccessResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "success" | Processing status<br>*Enum:* `"success"`<br>*Example:* `"success"` | Yes |
| sequence | string | Sequence number from the original request<br>*Example:* `"1"` | Yes |
| statusMessage | string | Success message<br>*Example:* `"User mapping record processed successfully."` | Yes |
| userMappingId | string (uuid) | Generated user mapping ID for the created mapping<br>*Example:* `"ee355a5b-3ea1-4a83-ac7c-2112c3d41560"` | Yes |

#### GetAccountData Schema

Response data to fetch account details.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string | HTTP Contact specific response code showing the status of the corresponding contact. | Yes |
| serviceKey | string | Unique key for each account number. This key can be sent in place of account number in the subsequent calls. | Yes |
| statusMessage | string | Application specific status message describing the status of the corresponding account. This message is mapped with the statusMessageCode. | Yes |
| accountDetails | { **"expYear"**: string, **"isToken"**: boolean, **"expMonth"**: string, **"isBlocked"**: boolean, **"ruleCount"**: string, **"accountLast4"**: string, **"emailContactCount"**: string, **"cardholderLastName"**: string, **"isControlSuspended"**: boolean, **"mobileContactCount"**: string, **"cardholderFirstName"**: string } | Account data in Get Account response. | No |
| sequenceNumber | string | The sequence number is used to map the response to the corresponding account in the request. | Yes |
| statusMessageCode | string | Application specific status message code indicating the status of the corresponding account. | Yes |

#### CreateAccountEntity Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| cvv | string | Account security code. | Yes |
| expYear | string | Expiration year of the card account. | Yes |
| isToken | boolean | Expected value: True/False<br><br>Indicates if the account is Visa pseudo account. <br><br>Default value: False. | No |
| expMonth | string | Expiration month of the card account. | Yes |
| isBlocked | boolean | Expected value: True/False<br><br>Indicates if the account should be added as blocked. This will ensure no transactions are allowed on the account. <br><br>Default value: False. | No |
| accountNumber | string | 16 digit account number to be added. | Yes |
| sequenceNumber | string | Expected value: A number in the range 0-249. Must start from 0 following other numbers in ascending order.<br><br>This value is used to map the response to the corresponding account in the request. | Yes |
| cardholderLastName | string | Cardholder Last Name.<br><br>Default value: LNU. | No |
| cardholderFirstName | string | Cardholder First Name.<br><br>Default value: FNU. | No |

#### GetUserMappingSuccessResult Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "success" | Processing status<br>*Enum:* `"success"`<br>*Example:* `"success"` | Yes |
| userId | string | User identifier<br>*Example:* `"pentestuser1"` | Yes |
| account | string | Masked account number showing only last 4 digits. Format: ************1234 <br>*Example:* `"************0100"` | Yes |
| endDate | dateTime | End date with time in ISO 8601 format | Yes |
| clientId | string | Client identifier<br>*Example:* `"fintech_0001"` | Yes |
| timezone | string | IANA timezone identifier<br>*Example:* `"Asia/Delhi"` | Yes |
| companyId | string | Company identifier<br>*Example:* `"VisaPentest1"` | Yes |
| issuerBid | string | Bank Identification Number<br>*Example:* `"10000130"` | Yes |
| statusCode | string | Success status code<br>*Example:* `"VCMRS-CDS-INFO-2002"` | Yes |
| accountType | string, <br>**Available values:** "PLASTIC", "VIRTUAL", "TOKEN", "FUNDING", "PAN" | Type of account<br>*Enum:* `"PLASTIC"`, `"VIRTUAL"`, `"TOKEN"`, `"FUNDING"`, `"PAN"`<br>*Example:* `"VIRTUAL"` | Yes |
| accountPoolId | string | Account pool identifier<br>*Example:* `"4000900010"` | Yes |
| statusMessage | string | Success message<br>*Example:* `"Successfully fetched user mapping record."` | Yes |
| userMappingId | string (uuid) | User mapping ID<br>*Example:* `"ee355a5b-3ea1-4a83-ac7c-2112c3d41560"` | Yes |
| authenticationMethod | string, <br>**Available values:** "OTP", "BIOMETRIC" | Authentication method<br>*Enum:* `"OTP"`, `"BIOMETRIC"`<br>*Example:* `"OTP"` | Yes |

#### RetrieveMerchantResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| messageId | string | Unique identifier which was sent in the request | No |
| statusCode | string | Status code of the response | No |
| contactInfo | { **"city"**: string, **"state"**: string, **"zipCode"**: string, **"countryCode"**: string, **"addressLine1"**: string, **"addressLine2"**: string, **"addressLine3"**: string, **"supplierName"**: string } |  | No |
| statusDescription | string | Status description of the response | No |
| supplierTrustStatusInd | boolean | Indicates if the supplier is trusted | No |
| acquirerBinCaidMappings | [ { **"caid"**: string, **"acquirerBin"**: string } & { **"acquirerBinCaidTrustStatusInd"**: boolean } ] | Acquirer BIN and CAID mappings | No |

#### UpdateSupplierResponse Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| details | [ { **"errorCode"**: string, **"errorMessage"**: string } ] | Populated on validation errors. | No |
| requestId | string | Echo of requestId from the request.<br>*Example:* `"b2b9bee2-4de6-5917-bd13-c8ff81bde4e3"` | Yes |
| statusCode | string | Status code.<br>*Example:* `"SV-INFO-2000"` | Yes |
| statusMessage | string | Status message.<br>*Example:* `"Success"` | Yes |

#### CreateCompanySuccessResponse Schema

Response for company creation.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | { **"companyId"**: string, **"portfolioId"**: string } | Response data for successful company creation. | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### CreateUserMappingCallbackPayload-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### CreateUserMappingCallbackPayload-2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### CreateUserMappingCallbackPayload-3 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### Error Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Message | string | Error message<br>*Example:* `"Request validation failed"` | No |
| Description | string | Error description<br>*Example:* `"Invalid request"` | No |
| ReferenceNumber | string | Reference number for the error<br>*Example:* `"REF123456"` | No |
| ReasonDescription | string | Detailed reason description for the error<br>*Example:* `"Request validation failed"` | No |

#### CreateUserMappingCallbackPayload-4 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### Contact Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| contactType | string | Expected value: Email/Mobile.<br><br>Type of the contact (Email/Mobile). | Yes |
| contactValue | string | Either the email address or the mobile number. | Yes |
| sequenceNumber | string | Expected value: A number in the range 0-249. Must start from 0 following other numbers in ascending order.<br><br>This value is used to map the response to the corresponding contact in the request. | Yes |

#### ExemptionInfo Schema

Object containing exemption information

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MCRiskScore | string | Mastercard risk score<br>*Example:* `"75"` | No |
| WhitelistStatus | string | Whitelist status indicator<br>*Example:* `"Y"` | No |
| MerchantFraudRate | string | Merchant fraud rate. Value of 1 or 2 characters. Note: 1 basis point is equal to 0.01%. Note: Currently only available on Mastercard EMV 3DS transactions where extension data is present. Will be available in future EMV versions. Note: Fraud rate is calculated as: (Number of fraudulent transactions / Total number of transactions) * 10000<br>*Example:* `"25"` | No |
| WhitelistStatusSource | string | Source of whitelist status<br>*Example:* `"01"` | No |
| SecureCorporatePayment | string | Secure corporate payment indicator<br>*Example:* `"Y"` | No |

#### ContactInfo-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| city | string | City name of the supplier's address. Optional. Max 50 characters.<br>*Example:* `"New York"` | No |
| state | string | State or province of the supplier's address. Optional. Max 50 characters.<br>*Example:* `"NY"` | No |
| postalCode | string | Postal or ZIP code of the supplier's address. Optional. Max 20 characters.<br>*Example:* `"10004"` | No |
| countryCode | string | Country code in 3-digit ISO 3166-1 numeric format. Required.<br>*Example:* `"840"` | Yes |
| addressLine1 | string | First line of the supplier's street address. Optional. Max 100 characters.<br>*Example:* `"32 Pearl Street"` | No |
| addressLine2 | string | Second line of the supplier's street address. Optional. Max 100 characters.<br>*Example:* `"Suite 100"` | No |
| addressLine3 | string | Third line of the supplier's street address. Optional. Max 100 characters.<br>*Example:* `"Building A"` | No |
| supplierName | string | Name of the supplier. Required. Max 100 characters.<br>*Example:* `"Delta Hotels New York"` | Yes |

#### CreateUserMappingResult-3 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### CreateUserMappingResult-4 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### CreateUserMappingResult-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### ShippingAddress Schema

An object containing Shipping Address

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Region | string | State, Province, Territory, etc.<br>*Example:* `"NY"` | No |
| Address1 | string | Address line 1<br>*Example:* `"456 Oak Avenue"` | No |
| Address2 | string | Address line 2<br>*Example:* `"Suite 200"` | No |
| Address3 | string | Address line 3<br>*Example:* `"Floor 2"` | No |
| LastName | string | Last name for the address<br>*Example:* `"Doe"` | No |
| Locality | string | City, Town, etc.<br>*Example:* `"New York"` | No |
| FirstName | string | First name for the address<br>*Example:* `"Jane"` | No |
| MiddleName | string | Middle name for the address<br>*Example:* `"Marie"` | No |
| PostalCode | string | ZIP or other postal code of the shipping address<br>*Example:* `"10001"` | No |
| CountryCode | string | Country of the shipping address. ISO 3166-1 numeric three-digit country code<br>*Example:* `"840"` | No |

#### ConsumerWalletInfo Schema

An object containing consumer wallet information

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Provider | string | Wallet provider name<br>*Example:* `"ApplePay"` | No |
| WalletAge | long | Number of days the wallet has existed. Max. value 10000<br>*Example:* `365` | No |
| PaymentCardAge | long | Number of days the card has been in the wallet. Max. value 10000<br>*Example:* `180` | No |

#### CreateUserMappingResult-2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| requestId | string (uuid) | Original request ID<br>*Example:* `"4c60cfe4-2f9d-4f43-a032-c06f1cb1728c"` | Yes |
| userMappingResults | [ { **"status"**: string, <br>**Available values:** "success", **"sequence"**: string, **"statusMessage"**: string, **"userMappingId"**: string (uuid) } or { **"status"**: string, <br>**Available values:** "error", **"sequence"**: string, **"statusCode"**: string, **"errorDetails"**: [ { **"errorCode"**: string, **"errorMessage"**: string } ], **"statusMessage"**: string } ] | Results for each user mapping in the original request | Yes |

#### GetContactSuccessResponse Schema

Response for Get contact API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| data | [ { **"accountsContacts"**: [ { **"status"**: string, **"contacts"**: [ { **"isHTML"**: boolean, **"contactType"**: string, **"countryCode"**: string, **"contactValue"**: string, **"languageCode"**: string } ], **"serviceKey"**: string, **"accountLast4"**: string, **"statusMessage"**: string, **"sequenceNumber"**: string, **"statusMessageCode"**: string } ] } ] |  | Yes |
| message | string | Message describing the request processing status. This message is mapped with the messageCode. | Yes |
| requestId | string | Unique identifier sent in the request. | Yes |
| messageCode | string | Message code indicating the status of the request (Application specific code). | Yes |

#### GetAccountEntity Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| serviceKey | string | Expected value: 16-18 digit number<br><br>Unique key for each account number. This value is provided in the Create Account response. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| accountNumber | string | 16 digit account number to be added. <br><br>Note: Either the accountNumber field or the serviceKey field must be included in the request. | No |
| sequenceNumber | string | Expected value: A number in the range 0-249. Must start from 0 following other numbers in ascending order.<br><br>This value is used to map the response to the corresponding account in the request. | Yes |

#### ContactModel Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| isHTML | boolean | Indicates the format of the text in the email body is HTML. Else, it will be text. <br><br>Note: Include only if the 'contactType' field is 'Email'. | No |
| contactType | string | Expected value: Email/Mobile.<br><br>Type of the contact (Email/Mobile). | Yes |
| countryCode | string | Expected value: Dialing code.<br>Example: 1 for USA and Canada. <br><br>Country code for the mobile number. <br><br>Note: Include only if the 'contactType' field is 'Mobile'. | No |
| contactValue | string | Either the email address or the mobile number. | Yes |
| languageCode | string | Specifies the language of the notification text. Refer to <a href=\\"/capabilities/visa-b2b-payment-controls/docs-master-codes">Response code and description</a> for supported languages and their codes. | Yes |
| sequenceNumber | string | Expected value: A number in the range 0-249. Must start from 0 following other numbers in ascending order.<br><br>This value is used to map the response to the corresponding account in the request. | Yes |
