# Installment Management Service
Installment Management Service.

## Version: 1

### Servers

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

---
## Installment Management Service API - Deprecated
Financial Institution (FI) requests Visa Installments Service (VIS) for the list of confirmed or cancelled installment transactions for a given time-period, so they can process installment conversion together with the clearing file received from payment network. Financial Institution performs cancel and refund accordingly. 

### [PUT] /installments/enrollments
**Unenrollment API**

Cardholder Unenrollment API

#### Parameters

| Name | Located in | Description | Required | Schema | Style | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ----- | ------- |
| X-SERVICE-CONTEXT | header | X-SERVICE-CONTEXT | Yes | string | simple | No |

#### Request Body

List of consumer information

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"consumers"**: [ { **"settings"**: { **"availablePlans"**: [ object ], **"availableCredit"**: { **"amount"**: string, **"currencyCode"**: string }, **"installmentFrequency"**: string, **"numberOfInstallments"**: string }, **"consumerInfo"**: { **"hashedURN"**: string, **"encEmailAddress"**: string, **"encMobileNumber"**: string, **"encAccountNumber"**: string }, **"preTransactionInstallmentAcceptanceEnabled"**: boolean, **"postTransactionInstallmentAcceptanceEnabled"**: boolean } ] }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | Accepted | **application/json**: { **"201"**: object, **"UpdateConsumersResponse"**: { **"accepted"**: { **"count"**: integer }, **"rejected"**: { **"count"**: integer, **"consumers"**: [ { **"errors"**: [ { **"field"**: string, **"errorMessage"**: string } ], **"consumerInfo"**: { **"hashedURN"**: string, **"encEmailAddress"**: string, **"encMobileNumber"**: string, **"encAccountNumber"**: string }, **"requestIndex"**: integer } ] } } }<br> |
| 401 | Unauthorized |  |
| 403 | Forbidden |  |
| 404 | Not Found |  |

### [POST] /installments/enrollments
**Enrollments**

Installment Plan API

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"consumers"**: [ { **"settings"**: { **"availablePlans"**: [ object ], **"availableCredit"**: { **"amount"**: string, **"currencyCode"**: string }, **"installmentFrequency"**: string, **"numberOfInstallments"**: string }, **"consumerInfo"**: { **"hashedURN"**: string, **"encEmailAddress"**: string, **"encMobileNumber"**: string, **"encAccountNumber"**: string }, **"preTransactionInstallmentAcceptanceEnabled"**: boolean, **"postTransactionInstallmentAcceptanceEnabled"**: boolean } ] }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | Created | **application/json**: { **"UpdateConsumersResponse"**: { **"accepted"**: { **"count"**: integer }, **"rejected"**: { **"count"**: integer, **"consumers"**: [ { **"errors"**: [ { **"field"**: string, **"errorMessage"**: string } ], **"consumerInfo"**: { **"hashedURN"**: string, **"encEmailAddress"**: string, **"encMobileNumber"**: string, **"encAccountNumber"**: string }, **"requestIndex"**: integer } ] } } }<br> |
| 401 | Unauthorized |  |
| 403 | Forbidden |  |
| 404 | Not Found |  |

### [GET] /installments/planAcceptances
**Get Plan Acceptance**

Plan Acceptance API

#### Parameters

| Name | Located in | Description | Required | Schema | Style | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ----- | ------- |
| endDateTime | query | End Date-Time of the range for records to be returned. Date-Time should be in UTC time in ISO 8601 Format. Any timezone information provided will be ignored. | No | dateTime | form | Yes |
| page | query | Page index number of paginated records. Default = 0 (zero-based index). | No | integer | form | Yes |
| size | query | Number of records per page. Default = 20 | No | integer | form | Yes |
| startDateTime | query | Start Date-Time of the range for records to be returned. Date-Time should be in UTC time in ISO 8601 Format. Any timezone information provided will be ignored. | No | dateTime | form | Yes |
| status | query | return only planAcceptance records with this status | No | string | form | Yes |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | ok | **application/json**: { **"GetPlanAcceptanceDetailsResponse"**: { **"planAcceptanceDetails"**: { **"last"**: boolean, **"size"**: integer, **"sort"**: { **"empty"**: boolean, **"sorted"**: boolean, **"unsorted"**: boolean }, **"empty"**: boolean, **"first"**: boolean, **"number"**: integer, **"content"**: [ { **"issuerID"**: string, **"planDetails"**: { **"frequency"**: string, **"numberOfInstallments"**: integer }, **"consumerInfo"**: { **"hashedURN"**: string, **"encEmailAddress"**: string, **"encMobileNumber"**: string, **"encAccountNumber"**: string }, **"fixedFeeAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"purchaseAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"vtransactionID"**: string, **"acceptedDateTime"**: string, **"merchantClientID"**: string, **"transactionAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"variableFeeAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"installmentPayment"**: { **"schedule"**: [ { **"amount"**: { **"amount"**: string, **"currencyCode"**: string }, **"status"**: string, **"paymentID"**: string, **"chargeType"**: string, **"sequenceId"**: integer, **"postingDate"**: string, **"paymentDescription"**: string } ], **"totalNumberOfPayments"**: integer, **"totalNumberOfPaymentsPending"**: integer }, **"vinstallmentPlanID"**: string, **"planAcceptanceStatus"**: string, **"externalTransactionID"**: string, **"transactionDescription"**: string, **"acceptanceCancellationReason"**: string, **"vinstallmentPlanAcceptanceID"**: string, **"acceptanceCancellationDateTime"**: string } ], **"pageable"**: { **"sort"**: { **"empty"**: boolean, **"sorted"**: boolean, **"unsorted"**: boolean }, **"paged"**: boolean, **"offset"**: long, **"unpaged"**: boolean, **"pageSize"**: integer, **"pageNumber"**: integer }, **"totalPages"**: integer, **"totalElements"**: long, **"numberOfElements"**: integer } } }<br> |
| 401 | Unauthorized |  |
| 403 | Forbidden |  |
| 404 | Not Found |  |

### [POST] /installments/planAcceptances
**Get Plan Acceptance POST**

Plan Acceptance API

#### Parameters

| Name | Located in | Description | Required | Schema | Style | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ----- | ------- |
| page | query | Page index number of paginated records. Default = 0 (zero-based index). | No | integer | form | Yes |
| size | query | Number of records per page. Default = 20 | No | integer | form | Yes |

#### Request Body

look-up details

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"status"**: string, **"endDateTime"**: string, **"consumerInfo"**: { **"hashedURN"**: string, **"encEmailAddress"**: string, **"encMobileNumber"**: string, **"encAccountNumber"**: string }, **"startDateTime"**: string, **"vInstallmentPlanAcceptanceID"**: string, **"vinstallmentPlanAcceptanceID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | Created | **application/json**: { **"GetPlanAcceptanceDetailsResponse"**: { **"planAcceptanceDetails"**: { **"last"**: boolean, **"size"**: integer, **"sort"**: { **"empty"**: boolean, **"sorted"**: boolean, **"unsorted"**: boolean }, **"empty"**: boolean, **"first"**: boolean, **"number"**: integer, **"content"**: [ { **"issuerID"**: string, **"planDetails"**: { **"frequency"**: string, **"numberOfInstallments"**: integer }, **"consumerInfo"**: { **"hashedURN"**: string, **"encEmailAddress"**: string, **"encMobileNumber"**: string, **"encAccountNumber"**: string }, **"fixedFeeAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"purchaseAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"vtransactionID"**: string, **"acceptedDateTime"**: string, **"merchantClientID"**: string, **"transactionAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"variableFeeAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"installmentPayment"**: { **"schedule"**: [ { **"amount"**: { **"amount"**: string, **"currencyCode"**: string }, **"status"**: string, **"paymentID"**: string, **"chargeType"**: string, **"sequenceId"**: integer, **"postingDate"**: string, **"paymentDescription"**: string } ], **"totalNumberOfPayments"**: integer, **"totalNumberOfPaymentsPending"**: integer }, **"vinstallmentPlanID"**: string, **"planAcceptanceStatus"**: string, **"externalTransactionID"**: string, **"transactionDescription"**: string, **"acceptanceCancellationReason"**: string, **"vinstallmentPlanAcceptanceID"**: string, **"acceptanceCancellationDateTime"**: string } ], **"pageable"**: { **"sort"**: { **"empty"**: boolean, **"sorted"**: boolean, **"unsorted"**: boolean }, **"paged"**: boolean, **"offset"**: long, **"unpaged"**: boolean, **"pageSize"**: integer, **"pageNumber"**: integer }, **"totalPages"**: integer, **"totalElements"**: long, **"numberOfElements"**: integer } } }<br> |
| 401 | Unauthorized |  |
| 403 | Forbidden |  |
| 404 | Not Found |  |

### [GET] /installments/planAcceptances/{vInstallmentPlanAcceptanceID}
**Fetch Plan Acceptance**

Plan Acceptance Details [Individual] API

#### Parameters

| Name | Located in | Description | Required | Schema | Style | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ----- | ------- |
| vInstallmentPlanAcceptanceID | path | A vInstallmentPlanAcceptanceID of the Accepted Installment Plan | Yes | string | simple | No |
| X-SERVICE-CONTEXT | header | X-SERVICE-CONTEXT | Yes | string | simple | No |
| externalClientID | query | Partner relationship ID | No | string | form | Yes |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | ok | **application/json**: { **"GetPlanAcceptanceDetailsResponse"**: { **"planAcceptanceDetails"**: { **"last"**: boolean, **"size"**: integer, **"sort"**: { **"empty"**: boolean, **"sorted"**: boolean, **"unsorted"**: boolean }, **"empty"**: boolean, **"first"**: boolean, **"number"**: integer, **"content"**: [ { **"issuerID"**: string, **"planDetails"**: { **"frequency"**: string, **"numberOfInstallments"**: integer }, **"consumerInfo"**: { **"hashedURN"**: string, **"encEmailAddress"**: string, **"encMobileNumber"**: string, **"encAccountNumber"**: string }, **"fixedFeeAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"purchaseAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"vtransactionID"**: string, **"acceptedDateTime"**: string, **"merchantClientID"**: string, **"transactionAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"variableFeeAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"installmentPayment"**: { **"schedule"**: [ { **"amount"**: { **"amount"**: string, **"currencyCode"**: string }, **"status"**: string, **"paymentID"**: string, **"chargeType"**: string, **"sequenceId"**: integer, **"postingDate"**: string, **"paymentDescription"**: string } ], **"totalNumberOfPayments"**: integer, **"totalNumberOfPaymentsPending"**: integer }, **"vinstallmentPlanID"**: string, **"planAcceptanceStatus"**: string, **"externalTransactionID"**: string, **"transactionDescription"**: string, **"acceptanceCancellationReason"**: string, **"vinstallmentPlanAcceptanceID"**: string, **"acceptanceCancellationDateTime"**: string } ], **"pageable"**: { **"sort"**: { **"empty"**: boolean, **"sorted"**: boolean, **"unsorted"**: boolean }, **"paged"**: boolean, **"offset"**: long, **"unpaged"**: boolean, **"pageSize"**: integer, **"pageNumber"**: integer }, **"totalPages"**: integer, **"totalElements"**: long, **"numberOfElements"**: integer } } }<br> |
| 401 | Unauthorized |  |
| 403 | Forbidden |  |
| 404 | Not Found |  |

### [POST] /installments/planAcceptances/{vInstallmentPlanAcceptanceID}/payments
**Early Installment Payments**

Irregular Installment Payments API

#### Parameters

| Name | Located in | Description | Required | Schema | Style | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ----- | ------- |
| vInstallmentPlanAcceptanceID | path | A vInstallmentPlanAcceptanceID of the Accepted Installment Plan  | Yes | string | simple | No |

#### Request Body

Irregular Payment Information

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"numberOfPayments"**: integer, **"paymentEventType"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | Created | **application/json**: { **"IrregularInstallmentPaymentsResponse"**: { **"remainingBalance"**: { **"amount"**: string, **"currencyCode"**: string }, **"nextPaymentAmount"**: { **"amount"**: string, **"currencyCode"**: string }, **"remainingPayments"**: integer, **"nextPaymentDueTimestamp"**: dateTime, **"vinstallmentPlanAcceptanceID"**: string } }<br> |
| 401 | Unauthorized |  |
| 403 | Forbidden |  |
| 404 | Not Found |  |

### [PUT] /installments/plans/consumerPreferences
**Consumer Preferences**

Set up Installments Preference API

#### Request Body

Consumer Preference Information

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"preferences"**: { **"prePurchase"**: { **"installmentPlan"**: { **"planID"**: string, **"termsAndConditions"**: { **"url"**: string, **"versionNumber"**: string } } } }, **"consumerInfo"**: { **"hashedURN"**: string, **"encEmailAddress"**: string, **"encMobileNumber"**: string, **"encAccountNumber"**: string } }<br> |

#### Responses

| Code | Description |
| ---- | ----------- |
| 200 | OK |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |

---
## Installment Management Service API V2
APIs used by issuers to enable Visa Installment Solutions for their customers at different points in the purchase journey, both e-commerce and in-store.

### [POST] /installments/v2/cardHolders/search
**Search Cardholder Enrollment**

Search cardholders using enrollment Profile ID or encrypted PAN

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| size | query |  | No | <br>**Default:** 1000 | Yes |
| page | query |  | No | integer | Yes |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"encAccountNumber"**: byte, **"externalClientID"**: string, **"vEnrollmentProfileID"**: string (uuid) }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Enrolled CardHolders Results page. When there are no results, any empty page is returned. The results are sorted by <code>enrollmentTimestamp</code> in reverse chronological order. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"last"**: boolean, **"empty"**: boolean, **"first"**: boolean, **"number"**: integer, **"totalCount"**: integer, **"totalPages"**: integer, **"resultsCount"**: integer } & { **"content"**: [ { **"productType"**: string, <br>**Available values:** "CREDIT", "DEBIT", **"encAccountNumber"**: byte, **"enrollmentStatus"**: string, <br>**Available values:** "ENROLLED", "NOT_ENROLLED", "ERROR", **"enrollmentEndDate"**: dateTime, **"enrollmentStartDate"**: dateTime, **"enrollmentTimestamp"**: dateTime, **"vEnrollmentProfileID"**: string (uuid), **"lastEnrollmentEndDate"**: dateTime, **"extendedEligibilityEndDate"**: dateTime } ] }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [GET] /installments/v2/cardHolders/batch/{vBatchID}
**Retrieve Cardholder Batch Results API**

Retrieve output of a previously submitted batch processes(Cardholder Enrollment, Cardholder Enrollment Update, Cardholder Unenrollment) using the vBatchID. There are 3 types of cardholder batch APIs:   + CARDHOLDER_ENROLLMENT   + CARDHOLDER_ENROLLMENT_UPDATE   + CARDHOLDER_ENROLLMENT_DELETE

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| vBatchID | path |  | Yes | string (uuid) | No |
| size | query |  | No | <br>**Default:** 1000 | Yes |
| page | query |  | No | integer | Yes |
| externalClientID | query |  | No | string | Yes |
| enrollmentStatus | query |  | No | string, <br>**Available values:** "ENROLLED", "NOT_ENROLLED", "ERROR" | Yes |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Get CardHolders enrollment results in this batch. All of the data submitted in the original HTTP request is echoed back in the response with errors, if any. <b>The order of the results is preserved when compared to the order of items in the original request body.</b> If there were errors creating the resource, then, an <code>errorResponse</code> is returned. + When <code>batchStatus == SUBMITTED</code> there will be no <code>content</code> & <code>batchExpirationDateTime</code> fields in the response. + When <code>batchStatus == COMPLETED</code> all fields will be available in the response. + If the batch results are not ready, a Retry-After response header may be sent, when appropriate (Default is 600 seconds). <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"last"**: boolean, **"empty"**: boolean, **"first"**: boolean, **"number"**: integer, **"totalCount"**: integer, **"totalPages"**: integer, **"resultsCount"**: integer } & { **"content"**: [ { **"productType"**: string, <br>**Available values:** "CREDIT", "DEBIT", **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }, **"encAccountNumber"**: byte, **"enrollmentStatus"**: string, <br>**Available values:** "ENROLLED", "NOT_ENROLLED", "ERROR", **"enrollmentEndDate"**: dateTime, **"enrollmentStartDate"**: dateTime, **"enrollmentTimestamp"**: dateTime, **"vEnrollmentProfileID"**: string (uuid), **"lastEnrollmentEndDate"**: dateTime, **"extendedEligibilityEndDate"**: dateTime } ], **"vBatchID"**: string (uuid), **"batchType"**: string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES", **"batchStatus"**: string, <br>**Available values:** "SUBMITTED", "COMPLETED", **"batchExecutionDateTime"**: dateTime, **"batchExpirationDateTime"**: dateTime }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to   + Invoke an API request for a resource that is not part of your project.   + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used.   + The Client does not have the permissions to view the details associated with <code>batchId</code>. The value of <code>errorResponse.reason</code> is <code>forbiddenClientIDBatchIDAccess</code> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | Batch not found. The batch corresponding to the vBatchID is either expired or invalid.<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [PUT] /installments/v2/accountRanges/{vAccountRangeEnrollmentID}
**Update Non-Visa Account Range Enrollment API**

This API enables Issuers to update the details of previously enrolled Non-Visa Account Range.
+ Note that this API is strictly to be used only for Non-Visa Account Range Enrollment.
+ Updating of <code>accountRangeMin</code> and/or <code>accountRangeMax</code> is not supported;
  this can be achieved by first unenrolling existing Account Range, followed by enrolling the new Account Range.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| vAccountRangeEnrollmentID | path |  | Yes | string (uuid) | No |
| externalClientID | query |  | No | string | Yes |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"accountRangeMax"**: string, **"accountRangeMin"**: string, **"vEnrollmentProfileID"**: string (uuid), **"vAccountRangeEnrollmentID"**: string (uuid) }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Account Range Enrollment updated successfully<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"accountRangeMax"**: string, **"accountRangeMin"**: string, **"vEnrollmentProfileID"**: string (uuid), **"vAccountRangeEnrollmentID"**: string (uuid) }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | Account Range Enrollment is not found<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 413 | Payload Too Large<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [DELETE] /installments/v2/accountRanges/{vAccountRangeEnrollmentID}
**Unenroll Non-Visa Account Range API**

This API enables Issuers to unenroll Non-Visa Account Range
+ Note that this API is strictly to be used only for Non-Visa Account Range enrollment.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| externalClientID | query |  | No | string | Yes |
| vAccountRangeEnrollmentID | path |  | Yes | string (uuid) | No |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 204 | Account Range unenrolled successfully - No Content<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> |  |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | Account Range Enrollment is not found<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 413 | Payload Too Large<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [GET] /installments/v2/consumerPreferences
**Return Captured Consumer Preferences**

This API retrieves cardholder preferences that were previously captured.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| size | query |  | No | <br>**Default:** 1000 | Yes |
| page | query |  | No | integer | Yes |
| externalClientID | query |  | No | string | Yes |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Consumer Preferences Results page. The results are sorted by <code>prePurchaseOptIn</code> in reverse chronological order. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"last"**: boolean, **"empty"**: boolean, **"first"**: boolean, **"number"**: integer, **"totalCount"**: integer, **"totalPages"**: integer, **"resultsCount"**: integer } & { **"content"**: [ { **"encAccountNumber"**: byte, **"prePurchaseOptIn"**: { **"vPlanID"**: string (uuid), **"optInDateTime"**: dateTime, **"acceptedTAndCVersion"**: integer } } ], <br>**Default:**  }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | The referenced cardholder is not enrolled. The consumer preferences should correspond to one of the enrolled cardholders (either enrolled via encAccountNumber or enrolled via AccountRange that satisfies the passed-in PAN). <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support at developer@visa.com if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support at developer@visa.com with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support at developer@visa.com if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [POST] /installments/v2/consumerPreferences
**Capture Consumer Preference**

This API captures cardholder opt in and plan selection for pre-purchase Installments.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| v-c-idempotency-key | header | Unique ID for every API request - an optional header. Generated by the API client. Used for idempotency. | No | string (uuid) | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"encAccountNumber"**: byte, **"prePurchaseOptIn"**: { **"vPlanID"**: string (uuid), **"optInDateTime"**: dateTime, **"acceptedTAndCVersion"**: integer } } & { **"externalClientID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | Consumer Preferences successfully created<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br>**v-c-idempotency-key**: Unique ID for the API response. v-c-idempotency-key is echoed back. Used for idempotency.<br> | **application/json**: { **"encAccountNumber"**: byte, **"prePurchaseOptIn"**: { **"vPlanID"**: string (uuid), **"optInDateTime"**: dateTime, **"acceptedTAndCVersion"**: integer } }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support at developer@visa.com if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support at developer@visa.com with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support at developer@visa.com if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [POST] /installments/v2/cardHolders/batch/update
**Update Cardholders Enrollment API - Batch**

Update the cardholder enrollments via an async REST API. + It can be a long-running task to update the enrollment of a lot of cardholders. + Note that this API can tolerate partial errors. So, if there are some enrollments updates that fail, the rest of the ones will be successfully updated. + If the cardholders are not already enrolled and are passed-in for update, they will NOT be enrolled as a result of this API call and there will be an error.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| v-c-idempotency-key | header | Unique ID for every API request - an optional header. Generated by the API client. Used for idempotency. | No | string (uuid) | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"cardHolders"**: [ { **"encAccountNumber"**: byte, **"enrollmentEndDate"**: dateTime, **"vEnrollmentProfileID"**: string (uuid), **"extendedEligibilityEndDate"**: dateTime } ], **"externalClientID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | CardHolders enrollment update batch job submitted successfully<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br>**v-c-idempotency-key**: Unique ID for the API response. v-c-idempotency-key is echoed back. Used for idempotency.<br> | **application/json**: { **"vBatchID"**: string (uuid), **"batchType"**: string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES", **"batchExpirationDateTime"**: dateTime }<br> |
| 400 | Any input validation of errors in <code>encAccountNumber</code> fields within the <code>cardHolders</code> array are not performed in this call. They are returned as errors in the batch results response later.  The <code>errorResponse.details</code> part of the error response may provide a list of fields which failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request. Some examples are base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br>**v-c-idempotency-key**: Unique ID for the API response. v-c-idempotency-key is echoed back. Used for idempotency.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 413 | Payload Too Large<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

#### Callback: batchCompleted

##### [POST] `{postbackNotificationUrl}`
**Postback Notifications**

These are API calls initiated by the Visa backend to the Visa Partner’s backend servers.
+ The <code>postbackNotificationUrl</code> is configured by the Visa partners during onboarding.
+ Invoked whenever the enrollments batch request results are ready for Visa partner to pull the results from Visa using another API call.
+ There will be 2 retries with random times from 1-30 minutes if there are any 5XX or 404 errors returned from the client/partner.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| x-message-tracking-id | header | Tracking ID for callback and notification sent by Visa | Yes | string | No |
| postbackNotificationUrl | path |  | Yes | string | No |
| apiKey | query |  | Yes | string | Yes |
| x-pay-token | header | See [XPayToken definition in Security Schemes](#/components/securitySchemes/x-pay-token) for details <SchemaDefinition schemaRef="#/components/securitySchemes/x-pay-token" />  | Yes | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"vBatchID"**: string (uuid), **"batchType"**: string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES", **"batchStatus"**: string, <br>**Available values:** "SUBMITTED", "COMPLETED", **"messageMetadata"**: { **"type"**: string, <br>**Available values:** "BATCH_COMPLETED", "ELIGIBILITY", "PLANACCEPTANCE_STATUS_UPDATE", "INSTALLMENT_TRANSACTION_STATUS_UPDATE", "BILATERAL_PLAN_PARTNER_STATUS_UPDATE", **"vMessageID"**: string (uuid), **"createdDateTime"**: string (date-time-nooffset) }, **"batchExecutionDateTime"**: dateTime, **"batchExpirationDateTime"**: dateTime }<br> |

#### Responses

| Code | Description |
| ---- | ----------- |
| 401 | Authorized error due to any of the following reasons:   + x-pay-token is not present, is blank, or is not in a valid format.   + Timestamp field not in UTC timestamp format.   + apiKey not present in request.   + apiKey is not active.   + apiKey not valid.   + apiKey not active.  |
| 403 | Forbidden |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
| 2XX | Callback successfully processed; no retries will be performed. |

##### Security

| Security Schema | Scopes |
| --------------- | ------ |
| apiKey |  | x-pay-token |  |

### [GET] /installments/v2/accountRanges
**Retrieve Non-Visa Account Range Enrollment API**

This API enables Issuers to retrieve details of Non-Visa Account Range Enrollments.
+ Note that this API is strictly to be used only for Non-Visa Account Range Enrollment.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| size | query |  | No | integer, <br>**Default:** 100 | Yes |
| page | query |  | No | integer | Yes |
| externalClientID | query |  | No | string | Yes |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | A list of Account Range Enrollments<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"last"**: boolean, **"empty"**: boolean, **"first"**: boolean, **"number"**: integer, **"totalCount"**: integer, **"totalPages"**: integer, **"resultsCount"**: integer } & { **"content"**: [ { **"accountRangeMax"**: string, **"accountRangeMin"**: string, **"vEnrollmentProfileID"**: string (uuid), **"vAccountRangeEnrollmentID"**: string (uuid) } ], <br>**Default:**  }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | Account Range Enrollment is not found<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 413 | Payload Too Large<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [POST] /installments/v2/accountRanges
**Enroll Non-Visa Account Range API**

This API enables Issuers to enroll Non-Visa Account Range and associate it to Enrollment Profile.
+ Note that this API is strictly to be used only for Non-Visa Account Range Enrollment.
+ The first 6 characters of <code>accountRangeMin</code> and <code>accountRangeMax</code> have to be equal.
+ If <code>accountRangeMin</code> or <code>accountRangeMax</code> being enrolled is less than 16 characters,
  it will be automatically padded by the system.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| externalClientID | query |  | No | string | Yes |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"accountRangeMax"**: string, **"accountRangeMin"**: string, **"vEnrollmentProfileID"**: string (uuid) }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 201 | Account Range Enrollment created successfully<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"accountRangeMax"**: string, **"accountRangeMin"**: string, **"vEnrollmentProfileID"**: string (uuid), **"vAccountRangeEnrollmentID"**: string (uuid) }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 413 | Payload Too Large<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [GET] /installments/v2/planAcceptances/{vPlanAcceptanceID}/batch/{vBatchID}
**Retrieve Plan Acceptance Batch Results API**

Retrieve output of a previously submitted plan acceptance batch processes using the vBatchID. There is only one type of plan acceptance batch API implemented currently:   + PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| vPlanAcceptanceID | path |  | Yes | string (uuid) | No |
| vBatchID | path |  | Yes | string (uuid) | No |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Get irregular payments results in this batch. All of the data submitted in the original HTTP request is echoed back in the response with errors, if any. If there were errors creating the resource, then, an <code>errorResponse</code> is returned. + When <code>batchStatus == SUBMITTED</code> there will be no <code>content</code> & <code>batchExpirationDateTime</code> fields in the response. + When <code>batchStatus == COMPLETED</code> all fields will be available in the response. + If the batch results are not ready, a Retry-After response header may be sent, when appropriate (Default is 600 seconds). <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"currency"**: string, **"vBatchID"**: string (uuid), **"batchType"**: string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES", **"batchStatus"**: string, <br>**Available values:** "SUBMITTED", "COMPLETED", **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }, **"externalClientID"**: string, **"numberOfPayments"**: integer, **"paymentEventType"**: string, <br>**Available values:** "PARTIAL", "FULL", "DELINQUENT", **"remainingBalance"**: long, **"nextPaymentAmount"**: long, **"remainingPayments"**: integer, **"vPlanAcceptanceID"**: string (uuid), **"batchExecutionDateTime"**: dateTime, **"batchExpirationDateTime"**: dateTime, **"nextPaymentDueTimestamp"**: dateTime, **"vInstallmentTransactionID"**: string (uuid) }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | Batch not found. The batch corresponding to the vBatchID is either expired or invalid.<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [POST] /installments/v2/consumerPreferences/update
**Update Consumer Preferences**

This API updates cardholder preferences that were previously captured.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| v-c-idempotency-key | header | Unique ID for every API request - an optional header. Generated by the API client. Used for idempotency. | No | string (uuid) | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"encAccountNumber"**: byte, **"prePurchaseOptIn"**: { **"vPlanID"**: string (uuid), **"optInDateTime"**: dateTime, **"acceptedTAndCVersion"**: integer } } & { **"externalClientID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Consumer Preferences successfully updated<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br>**v-c-idempotency-key**: Unique ID for the API response. v-c-idempotency-key is echoed back. Used for idempotency.<br> | **application/json**: { **"encAccountNumber"**: byte, **"prePurchaseOptIn"**: { **"vPlanID"**: string (uuid), **"optInDateTime"**: dateTime, **"acceptedTAndCVersion"**: integer } }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | The referenced cardholder is not enrolled. The consumer preferences should correspond to one of the enrolled cardholders (either enrolled via encAccountNumber or enrolled via AccountRange that satisfies the passed-in PAN). <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support at developer@visa.com if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support at developer@visa.com with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support at developer@visa.com if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [POST] /installments/v2/planAcceptances/search
**Retrieve Plan Acceptances - Search**

This API retrieves the list of Installment Plan Acceptace for a given period based on Plan Acceptance status. A Plan Acceptance is a record, stored by Visa, that captures the cardholder’s selection or cancellation of an Installment plan. This API allows the issuer to search confirmed or cancelled Installment Plan Acceptance based on multiple lookup parameters, including - Date and Time, Plan Acceptance Status. The results are sorted by plan acceptance <code>createdDateTime</code> in reverse chronological order.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| size | query |  | No | integer, <br>**Default:** 100 | Yes |
| page | query |  | No | integer | Yes |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"status"**: string, <br>**Available values:** "CREATED", "CANCELLED", "UPDATED", "CONFIRMED", **"endDateTime"**: dateTime, **"startDateTime"**: dateTime, **"planDetailLevel"**: string, <br>**Available values:** "NONE", "SUMMARY", "FULL_DETAIL", <br>**Default:** NONE, **"encAccountNumber"**: byte, **"externalClientID"**: string, **"statusChangedEndDateTime"**: dateTime, **"statusChangedStartDateTime"**: dateTime }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Installment PlanAcceptances Results Page<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"last"**: boolean, **"empty"**: boolean, **"first"**: boolean, **"number"**: integer, **"totalCount"**: integer, **"totalPages"**: integer, **"resultsCount"**: integer } & { **"content"**: [ { **"status"**: string, <br>**Available values:** "CREATED", "CANCELLED", "UPDATED", "CONFIRMED", **"cardBrand"**: string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA, **"crossBorder"**: boolean, **"transactions"**: [ { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"sourceCurrency"**: string, **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"sourceCurrency"**: string, **"clearingAmountInSourceCurrency"**: long } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime, **"refundAmountInSourceCurrency"**: long } ], **"transactionRefundAmount"**: long, **"transactionAmountInSourceCurrency"**: long, **"transactionRefundAmountInSourceCurrency"**: long } ], <br>**Default:** , **"installmentPlan"**: { **"name"**: string, **"type"**: string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID", **"vPlanID"**: string (uuid), **"fundedBy"**: [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ], **"vPlanIDRef"**: string, **"islamicPlan"**: boolean, **"promotionInfo"**: { **"promotionID"**: string, **"promotionCode"**: string }, **"termsAndConditions"**: [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ], **"installmentFrequency"**: string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY", **"numberOfInstallments"**: number (integer) } & { **"costInfo"**: { **"feeInfo"**: [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "ACQUIRER_TO_VISA", "ISSUER_TO_ACQUIRER", "ISSUER_TO_VISA", "ISSUER_TO_VISA_SCHEDULING_FEES", **"flatFee"**: long, **"ratePercentage"**: integer } ], **"currency"**: string, **"totalFees"**: long, **"totalPlanCost"**: long, **"lastInstallment"**: { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"firstInstallment"**: { **"upfrontFee"**: long, **"totalAmountExcludingUpfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"totalUpfrontFees"**: long, **"totalRecurringFees"**: long, **"annualPercentageRate"**: integer } }, **"encAccountNumber"**: byte, **"statusTransitions"**: { **"createdDateTime"**: string (date-time-ms-nooffset), **"updatedDateTime"**: string (date-time-ms-nooffset), **"confirmedDateTime"**: string (date-time-ms-nooffset), **"cancellationDateTime"**: string (date-time-ms-nooffset) }, **"vPlanAcceptanceID"**: string (uuid) } ] }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [GET] /installments/v2/planAcceptances/{vPlanAcceptanceID}
**Retrieve Plan Acceptance by ID**

This API allows you to retrieve Installment Plan Acceptance details by Installment Plan Acceptance ID.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| vPlanAcceptanceID | path |  | Yes | string (uuid) | No |
| externalClientID | query |  | No | string | Yes |
| planDetailLevel | query |  | No | string, <br>**Available values:** "NONE", "SUMMARY", "FULL_DETAIL", <br>**Default:** NONE | Yes |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Plan Acceptance Details<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"status"**: string, <br>**Available values:** "CREATED", "CANCELLED", "UPDATED", "CONFIRMED", **"cardBrand"**: string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA, **"crossBorder"**: boolean, **"transactions"**: [ { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"sourceCurrency"**: string, **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"sourceCurrency"**: string, **"clearingAmountInSourceCurrency"**: long } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime, **"refundAmountInSourceCurrency"**: long } ], **"transactionRefundAmount"**: long, **"transactionAmountInSourceCurrency"**: long, **"transactionRefundAmountInSourceCurrency"**: long } ], <br>**Default:** , **"installmentPlan"**: { **"name"**: string, **"type"**: string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID", **"vPlanID"**: string (uuid), **"fundedBy"**: [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ], **"vPlanIDRef"**: string, **"islamicPlan"**: boolean, **"promotionInfo"**: { **"promotionID"**: string, **"promotionCode"**: string }, **"termsAndConditions"**: [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ], **"installmentFrequency"**: string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY", **"numberOfInstallments"**: number (integer) } & { **"costInfo"**: { **"feeInfo"**: [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "ACQUIRER_TO_VISA", "ISSUER_TO_ACQUIRER", "ISSUER_TO_VISA", "ISSUER_TO_VISA_SCHEDULING_FEES", **"flatFee"**: long, **"ratePercentage"**: integer } ], **"currency"**: string, **"totalFees"**: long, **"totalPlanCost"**: long, **"lastInstallment"**: { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"firstInstallment"**: { **"upfrontFee"**: long, **"totalAmountExcludingUpfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"totalUpfrontFees"**: long, **"totalRecurringFees"**: long, **"annualPercentageRate"**: integer } }, **"encAccountNumber"**: byte, **"statusTransitions"**: { **"createdDateTime"**: string (date-time-ms-nooffset), **"updatedDateTime"**: string (date-time-ms-nooffset), **"confirmedDateTime"**: string (date-time-ms-nooffset), **"cancellationDateTime"**: string (date-time-ms-nooffset) }, **"vPlanAcceptanceID"**: string (uuid) }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | Installment Plan Acceptance not found<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [POST] /installments/v2/cardHolders/batch
**Enroll Cardholders API - Batch**

This API enables Issuers to enroll Visa cardholders and associate them to enrollment profiles via an async REST API. + It can be a long-running task to enroll a lot of cardholders. + Note that this API can tolerate partial errors, thus, if there are some enrollments that fail, the rest of the ones will be successfully enrolled. + When productType is not provided in request,by default it is considered as Credit PAN.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| v-c-idempotency-key | header | Unique ID for every API request - an optional header. Generated by the API client. Used for idempotency. | No | string (uuid) | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"productType"**: string, <br>**Available values:** "CREDIT", "DEBIT", **"externalClientID"**: string, **"encAccountNumbers"**: byte, **"enrollmentEndDate"**: dateTime, **"vEnrollmentProfileID"**: string (uuid), **"extendedEligibilityEndDate"**: dateTime }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | CardHolders enrollment batch job submitted successfully<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br>**v-c-idempotency-key**: Unique ID for the API response. v-c-idempotency-key is echoed back. Used for idempotency.<br> | **application/json**: { **"vBatchID"**: string (uuid), **"batchType"**: string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES", **"batchExpirationDateTime"**: dateTime }<br> |
| 400 | Any input validations errors in <code>encAccountNumbers</code> array are not performed in this call. They are returned as errors in the batch results response later.  The <code>errorResponse.details</code> part of the error response may provide a list of fields which failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request. Some examples are base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br>**v-c-idempotency-key**: Unique ID for the API response. v-c-idempotency-key is echoed back. Used for idempotency.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 413 | Payload Too Large<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

#### Callback: eligibilty

##### [POST] `{postbackNotificationUrl}`
**Postback Notifications**

These are API calls initiated by the Visa backend, made to the Visa Partner’s backend servers.
+ The <code>postbackNotificationUrl</code> is configured by the Visa partners during onboarding.
+ This callback is available only for those clients that own the BIN for the PAN involved – <b>Lenders/Processors/BIN users/BIN owners</b>.
+ Invoked whenever there are transactions eligible for Installment plans for cardholders already registered through for a POST_PURCHASE installment mode.
+ There will be 2 retries with random times from 1-30 minutes, if there are any 5XX or 404 errors returned from the client/partner.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| x-message-tracking-id | header | Tracking ID for callback and notification sent by Visa | Yes | string | No |
| postbackNotificationUrl | path |  | Yes | string | No |
| apiKey | query |  | Yes | string | Yes |
| x-pay-token | header | See [XPayToken definition in Security Schemes](#/components/securitySchemes/x-pay-token) for details <SchemaDefinition schemaRef="#/components/securitySchemes/x-pay-token" />  | Yes | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"messageMetadata"**: { **"type"**: string, <br>**Available values:** "BATCH_COMPLETED", "ELIGIBILITY", "PLANACCEPTANCE_STATUS_UPDATE", "INSTALLMENT_TRANSACTION_STATUS_UPDATE", "BILATERAL_PLAN_PARTNER_STATUS_UPDATE", **"vMessageID"**: string (uuid), **"createdDateTime"**: string (date-time-nooffset) }, **"eligibleTransactions"**: [ { **"cardBrand"**: string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA, **"matchedPlans"**: [ string (uuid) ], **"transactionInfo"**: { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long }, **"encAccountNumber"**: byte, **"eligibilityDateTime"**: dateTime, **"eligibilityExpiryDateTime"**: dateTime } ] }<br> |

#### Responses

| Code | Description |
| ---- | ----------- |
| 401 | API authorized error caused due to any of the following reasons:   + x-pay-token is not present or blank or not in valid format.   + Timestamp field not in valid UTC timestamp format.   + APIKey not present in request.   + APIKey is not active.   + APIKey not valid.   + APIKey not active.  |
| 403 | Forbidden |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
| 2XX | Callback successfully processed and no retries will be performed |

##### Security

| Security Schema | Scopes |
| --------------- | ------ |
| apiKey |  | x-pay-token |  |

#### Callback: batchCompleted

##### [POST] `{postbackNotificationUrl}`
**Postback Notifications**

These are API calls initiated by the Visa backend to the Visa Partner’s backend servers.
+ The <code>postbackNotificationUrl</code> is configured by the Visa partners during onboarding.
+ Invoked whenever the enrollments batch request results are ready for Visa partner to pull the results from Visa using another API call.
+ There will be 2 retries with random times from 1-30 minutes if there are any 5XX or 404 errors returned from the client/partner.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| x-message-tracking-id | header | Tracking ID for callback and notification sent by Visa | Yes | string | No |
| postbackNotificationUrl | path |  | Yes | string | No |
| apiKey | query |  | Yes | string | Yes |
| x-pay-token | header | See [XPayToken definition in Security Schemes](#/components/securitySchemes/x-pay-token) for details <SchemaDefinition schemaRef="#/components/securitySchemes/x-pay-token" />  | Yes | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"vBatchID"**: string (uuid), **"batchType"**: string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES", **"batchStatus"**: string, <br>**Available values:** "SUBMITTED", "COMPLETED", **"messageMetadata"**: { **"type"**: string, <br>**Available values:** "BATCH_COMPLETED", "ELIGIBILITY", "PLANACCEPTANCE_STATUS_UPDATE", "INSTALLMENT_TRANSACTION_STATUS_UPDATE", "BILATERAL_PLAN_PARTNER_STATUS_UPDATE", **"vMessageID"**: string (uuid), **"createdDateTime"**: string (date-time-nooffset) }, **"batchExecutionDateTime"**: dateTime, **"batchExpirationDateTime"**: dateTime }<br> |

#### Responses

| Code | Description |
| ---- | ----------- |
| 401 | Authorized error due to any of the following reasons:   + x-pay-token is not present, is blank, or is not in a valid format.   + Timestamp field not in UTC timestamp format.   + apiKey not present in request.   + apiKey is not active.   + apiKey not valid.   + apiKey not active.  |
| 403 | Forbidden |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
| 2XX | Callback successfully processed; no retries will be performed. |

##### Security

| Security Schema | Scopes |
| --------------- | ------ |
| apiKey |  | x-pay-token |  |

### [POST] /installments/v2/consumerPreferences/search
**Retrieve Consumer Preferences - Search**

This API retrieves cardholder preferences that were previously captured using encrypted PAN.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"encAccountNumber"**: byte, **"externalClientID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Consumer Preferences Results Page<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"encAccountNumber"**: byte, **"prePurchaseOptIn"**: { **"vPlanID"**: string (uuid), **"optInDateTime"**: dateTime, **"acceptedTAndCVersion"**: integer } }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | The referenced cardholder is not enrolled. The consumer preferences should correspond to one of the enrolled cardholders (either enrolled via encAccountNumber or enrolled via AccountRange that satisfies the passed-in PAN). <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support at developer@visa.com if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support at developer@visa.com with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support at developer@visa.com if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [POST] /installments/v2/consumerPreferences/delete
**Delete Consumer Preference**

This API deletes cardholder preferences that were previously captured.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"encAccountNumber"**: byte, **"externalClientID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 204 | Consumer Preferences successfully Deleted - No Content<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> |  |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | The referenced cardholder is not enrolled. The consumer preferences should correspond to one of the enrolled cardholders (either enrolled via encAccountNumber or enrolled via AccountRange that satisfies the passed-in PAN). <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support at developer@visa.com if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support at developer@visa.com with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support at developer@visa.com if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [POST] /installments/v2/planAcceptances/{vPlanAcceptanceID}/batch/payments
**Plan Acceptance Irregular Payments Batch API**

This API provides the ability for the issuer to inform Visa about the irregular (early or late or missed) payments of the card holder for a particular plan acceptance. Visa will make the necessary changes to the payment schedule based on these irregular payments. If this call is not made, it is assumed that the card holder has made the scheduled (regular) payments. Also, Visa Installments assumes that the pre-payments are always made in multiples of the scheduled Installment payments (including fees).

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| vPlanAcceptanceID | path |  | Yes | string (uuid) | No |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| v-c-idempotency-key | header | Unique ID for every API request - an optional header. Generated by the API client. Used for idempotency. | No | string (uuid) | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"externalClientID"**: string, **"numberOfPayments"**: integer, **"paymentEventType"**: string, <br>**Available values:** "PARTIAL", "FULL", "DELINQUENT", **"vInstallmentTransactionID"**: string (uuid) }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | Plan Acceptance Irregular Payments batch job submitted successfully<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br>**v-c-idempotency-key**: Unique ID for the API response. v-c-idempotency-key is echoed back. Used for idempotency.<br> | **application/json**: { **"vBatchID"**: string (uuid), **"batchType"**: string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES", **"batchExpirationDateTime"**: dateTime }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to   + Invoke an API request for a resource that is not part of your project.   + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used.   + The service mode for Ledger management is enabled in the configuration (during onboarding).The value of <code>errorResponse.reason</code> is <code>ledgerManagementNotEnabled</code>   + The status of the Plan Acceptance is still being scheduled and need to retry later.The value of <code>errorResponse.reason</code> is <code>planAcceptanceNotInScheduledState</code>   + The Plan Acceptance status is in a state that cannot accept changes to payment schedule. The value of <code>errorResponse.reason</code> is <code>invalidPlanAcceptanceState</code> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 404 | Installment Plan Acceptance not found<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

### [POST] /installments/v2/cardHolders/batch/delete
**Unenroll Cardholders API - Batch**

Remove/Unenroll the cardholder enrollments via an async REST API. + It can be a long-running task to update the enrollment of many cardholders. + Note that this API can tolerate partial errors, thus, if there are some unenrollments that fail, the rest of the ones will be successfully completed.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | No |
| v-c-idempotency-key | header | Unique ID for every API request - an optional header. Generated by the API client. Used for idempotency. | No | string (uuid) | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"externalClientID"**: string, **"encAccountNumbers"**: byte }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 202 | CardHolders enrollment update batch job submitted successfully<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br>**v-c-idempotency-key**: Unique ID for the API response. v-c-idempotency-key is echoed back. Used for idempotency.<br> | **application/json**: { **"vBatchID"**: string (uuid), **"batchType"**: string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES", **"batchExpirationDateTime"**: dateTime }<br> |
| 400 | Any input validations errors in <code>encAccountNumbers</code> array are not performed in this call. They are returned as errors in the batch results response later.  The <code>errorResponse.details</code> part of the error response may provide a list of fields which failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request. Some examples are base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br>**v-c-idempotency-key**: Unique ID for the API response. v-c-idempotency-key is echoed back. Used for idempotency.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 403 | The 403 (Forbidden) HTTP Status code indicates that the access failed due to insufficient permissions or the operation is not allowed. This can happen if you are trying to + Invoke an API request for a resource that is not part of your project. + Perform an operation that is not permitted in the given context  Check for the following:   + You are using a project and the credential for the project that includes the API being accessed.   + You created a project and received sandbox credentials for the API’s being called.   + You added the API being called to the project (if not already present) with the credentials that are being used. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available. This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 413 | Payload Too Large<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.  Please contact Visa Support Representative if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 500 | Internal Server Error.  Please contact Visa Support Representative with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support Representative if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } }<br> |

#### Callback: batchCompleted

##### [POST] `{postbackNotificationUrl}`
**Postback Notifications**

These are API calls initiated by the Visa backend to the Visa Partner’s backend servers.
+ The <code>postbackNotificationUrl</code> is configured by the Visa partners during onboarding.
+ Invoked whenever the enrollments batch request results are ready for Visa partner to pull the results from Visa using another API call.
+ There will be 2 retries with random times from 1-30 minutes if there are any 5XX or 404 errors returned from the client/partner.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| x-message-tracking-id | header | Tracking ID for callback and notification sent by Visa | Yes | string | No |
| postbackNotificationUrl | path |  | Yes | string | No |
| apiKey | query |  | Yes | string | Yes |
| x-pay-token | header | See [XPayToken definition in Security Schemes](#/components/securitySchemes/x-pay-token) for details <SchemaDefinition schemaRef="#/components/securitySchemes/x-pay-token" />  | Yes | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"vBatchID"**: string (uuid), **"batchType"**: string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES", **"batchStatus"**: string, <br>**Available values:** "SUBMITTED", "COMPLETED", **"messageMetadata"**: { **"type"**: string, <br>**Available values:** "BATCH_COMPLETED", "ELIGIBILITY", "PLANACCEPTANCE_STATUS_UPDATE", "INSTALLMENT_TRANSACTION_STATUS_UPDATE", "BILATERAL_PLAN_PARTNER_STATUS_UPDATE", **"vMessageID"**: string (uuid), **"createdDateTime"**: string (date-time-nooffset) }, **"batchExecutionDateTime"**: dateTime, **"batchExpirationDateTime"**: dateTime }<br> |

#### Responses

| Code | Description |
| ---- | ----------- |
| 401 | Authorized error due to any of the following reasons:   + x-pay-token is not present, is blank, or is not in a valid format.   + Timestamp field not in UTC timestamp format.   + apiKey not present in request.   + apiKey is not active.   + apiKey not valid.   + apiKey not active.  |
| 403 | Forbidden |
| 500 | Internal Server Error |
| 503 | Service Unavailable |
| 2XX | Callback successfully processed; no retries will be performed. |

##### Security

| Security Schema | Scopes |
| --------------- | ------ |
| apiKey |  | x-pay-token |  |

### [POST] /installments/v2/planAcceptances/{vPlanAcceptanceID}/payments
**Irregular PlanAcceptance Payments**

This API provides the ability for the issuer to inform Visa about the irregular (early or late or missed) payments of the card holder for a particular plan acceptance. Visa will make the necessary changes to the payment schedule based on these irregular payments. If this call is not made, it is assumed that the card holder has made the scheduled (regular) payments. Also, Visa Installments assumes that the pre-payments are always made in multiples of the scheduled installment payments (including fees).

#### Parameters

| Name | Located in | Description | Required | Schema | Style | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ----- | ------- |
| vPlanAcceptanceID | path | Visa-generated identifier for a plan acceptance | Yes | string (uuid) | simple | No |
| ex-correlation-id | header | Unique ID for every API request - an optional header. Generated by the API client. Used for end-to-end tracing/debugging. | No | string | simple | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"externalClientID"**: string, **"numberOfPayments"**: integer, **"paymentEventType"**: string, <br>**Available values:** "PARTIAL", "FULL", "DELINQUENT" }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Irregular Plan Acceptance Payment Response<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"currency"**: string, **"remainingBalance"**: long, **"nextPaymentAmount"**: long, **"remainingPayments"**: long, **"vPlanAcceptanceID"**: string (uuid), **"nextPaymentDueTimestamp"**: dateTime }<br> |
| 400 | The <code>errorResponse.details</code> part of the error response can provide a list of fields that failed data validation constraints and errorResponse.reason values for this error include:   <ul>   <li><code>invalidRequest</code>The API server could not understand the request; for example, base64 decoding failed, the field is not in a particular format, etc.   </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } }<br> |
| 401 | API authorized error caused due to any of the following reasons: + x-pay-token is not present, blank, or not in a valid format. + Timestamp field not in valid UTC timestamp format. + Version field is invalid. + Token's timestamp is more than 8 minutes off from the current time. + Token hash mismatch. + APIKey not present in request. + APIKey is not active. + APIKey not valid. + APIKey not active. + Request has more than one authentication token, which is not supported <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }<br> |
| 403 | This will result in one of the below 403 errors: <ul> <li><code>ledgerManagementNotEnabled</code></li>  The service mode for Ledger management is not enabled in the configuration (during onboarding). <li><code>planAcceptanceNotInScheduledState</code></li>  The status of the plan Acceptance is still being scheduled. This API caller will need to retry this again later. </ul> <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } }<br> |
| 404 | Installment Plan Acceptance not found<br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }<br> |
| 406 | Not Acceptable - Indicates that the "Accept:" header field is present in a request and none of the available representations for the response have a media type that is listed as acceptable.  This can happen when the requested API version is not available or unsupported; for example, when the version requested in the Accept: header is newer than the currently live/supported version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }<br> |
| 410 | Gone - Indicates that the resource at this end point is no longer available.  This is usually returned for old API versions that are not available anymore - EOL (End-of-Life). The content-type header in the response indicates the latest supported API version. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }<br> |
| 429 | The Visa Developer Center project has clocked too many requests in a given amount of time.   Please contact Visa Support at developer@visa.com if you want to increase the time limits. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }<br> |
| 500 | Internal Server Error.  Please contact Visa Support at developer@visa.com with a complete error message, full http request and response details. <br>**Headers:**<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }<br> |
| 503 | The Visa system is currently unable to handle the request due to a temporary overloading or maintenance of the server.  There may be a Retry-After header field to suggest an appropriate amount of time for the client to wait before retrying the request. The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received. <code>Retry-After = HTTP-date \|\| delay-seconds</code> examples: + <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code> + <code>Retry-After: 120</code>  Please contact Visa Support at developer@visa.com if the issue persists. <br>**Headers:**<br>**Retry-After**: Header field to suggest an appropriate amount of time for the client to wait before retrying the request, typically after a 503 error or after a batch request when the batch job is not completed.
The value of this field can be either an HTTP-date or a number of seconds to delay after the response is received.
<code>Retry-After = HTTP-date || delay-seconds</code>
examples:
+ <code>Retry-After: Thu, 31 Dec 2020 23:59:59 GMT</code>
+ <code>Retry-After: 120</code>
<br>**ex-correlation-id**: Unique ID for the API response; ex-correlation-id is echoed back. Used for end-to-end tracing/debugging.<br> | **application/json**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }<br> |

---
### Schemas

#### TransactionRefundAmount Schema

The amount used for partial or full cancellation of clearings associated with Visa ISO transaction.
The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10".
Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.

When used in the HTTP request body for Visa Installment APIs
+ This field will be used to specify the refund amount to be split across the associated clearing within a transaction.
+ If this field is not provided then all clearing associated with the transaction will be fully cancelled based on the Transaction Amount.

When returned in the HTTP response body or callback notifications,
+ This field is populated if provided by the merchant/seller in the request and represents the refund amount that was split across the associated clearing within a transaction.

When requested in API request from Merchant (<b>During Purchase scenario</b>):
+ In multi-currency scenario, this field should be populated in source currency.

When returned in API response or callback notification (<b>During Purchase scenario</b>):
+ When returned to Merchant in multi-currency scenario, this field will be populated in source currency.
+ When returned to Issuer in multi-currency scenario, this field will be populated in Issuer's currency.

When requested in API request from Issuer (<b>Post Purchase scenario</b>):
 + In multi-currency scenario, this field should be populated in Issuer's currency.

When returned in API response or callback notification to Issuer (<b>Post Purchase scenario</b>):
+ In multi-currency scenario, this field will be populated in Issuer's currency.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionRefundAmount | long | The amount used for partial or full cancellation of clearings associated with Visa ISO transaction. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10". Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.  When used in the HTTP request body for Visa Installment APIs + This field will be used to specify the refund amount to be split across the associated clearing within a transaction. + If this field is not provided then all clearing associated with the transaction will be fully cancelled based on the Transaction Amount.  When returned in the HTTP response body or callback notifications, + This field is populated if provided by the merchant/seller in the request and represents the refund amount that was split across the associated clearing within a transaction.  When requested in API request from Merchant (<b>During Purchase scenario</b>): + In multi-currency scenario, this field should be populated in source currency.  When returned in API response or callback notification (<b>During Purchase scenario</b>): + When returned to Merchant in multi-currency scenario, this field will be populated in source currency. + When returned to Issuer in multi-currency scenario, this field will be populated in Issuer's currency.  When requested in API request from Issuer (<b>Post Purchase scenario</b>):  + In multi-currency scenario, this field should be populated in Issuer's currency.  When returned in API response or callback notification to Issuer (<b>Post Purchase scenario</b>): + In multi-currency scenario, this field will be populated in Issuer's currency.  |  |

#### TransactionSequenceTotal Schema

Total number of clearings for the corresponding Authorization. This is present only when there are multiple clearings per auth.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionSequenceTotal | integer | Total number of clearings for the corresponding Authorization. This is present only when there are multiple clearings per auth. |  |

**Example**
<pre>3</pre>

#### Currency Schema

Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Currency | string | Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)  |  |

**Example**
<pre>USD</pre>

#### InstallmentTransactionForResponse Schema

Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or
many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example).
Represents the schedule of payments corresponding to a plan acceptance.
Clearing data will be always included when available.
<BR/><b>NOTES:</b>
+ When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body).
+ When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransactionForResponse | { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } | Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example). Represents the schedule of payments corresponding to a plan acceptance. Clearing data will be always included when available. <BR/><b>NOTES:</b> + When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body). + When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.  |  |

#### BasePage Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| last | boolean |  | No |
| empty | boolean |  | No |
| first | boolean |  | No |
| number | integer |  | No |
| totalCount | integer |  | No |
| totalPages | integer |  | No |
| resultsCount | integer |  | No |

#### ConflictErrorResponse Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"DuplicateData"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `409` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Duplicate Data"` | No |

#### LastInstallment Schema

Cost details (fee and principal) for the last Installment.
Note that the last Installment includes the balance of the rounding amounts when amount is split across various Installment periods.
The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| LastInstallment | { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the last Installment. Note that the last Installment includes the balance of the rounding amounts when amount is split across various Installment periods. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

#### AccountRangeMax Schema

Maximum acceptable value in the defined Account Range Enrollment

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AccountRangeMax | string | Maximum acceptable value in the defined Account Range Enrollment |  |

**Example**
<pre>5236910248839999</pre>

#### CandidatesBatchPageContentArrayItem Schema

Each of the submitted <code>ConsumerInfo</code> object is echoed back in the response along with the following:
+ Eligibility Status
+ Error Response (if any encountered during matching process, eligibility status should be 'ERROR')

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CandidatesBatchPageContentArrayItem | { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string }, **"encAccountNumber"**: byte, **"eligibilityStatus"**: string, <br>**Available values:** "MATCHED", "NOT_MATCHED", "ERROR", <br>**Default:** MATCHED, **"tokenAccountNumber"**: string, **"vProvisionedTokenID"**: string } | Each of the submitted <code>ConsumerInfo</code> object is echoed back in the response along with the following: + Eligibility Status + Error Response (if any encountered during matching process, eligibility status should be 'ERROR')  |  |

#### TransactionAmount-1 Schema

<b>  Conditional Mandatory Field  </b>:
<br>
The amount used in the Visa ISO transaction authorization and is represented as numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)).
+ In case of <b>During Purchase scenario</b>, this value must be always provided.
+ In case of <b>Post Purchase scenario</b>, this value need not be provided and will internally be set as the sum of clearing amounts (<code>installmentTransactions.clearingAmount</code>).

When returned in the response body or callback notifications,
+ This field is populated if provided by the merchant/seller in the request and represents the transaction amount of the Visa ISO transaction authorization.
+ When returned to Issuer in multi-currency scenario, this field will populated in Issuer's currency. Before all clearings are received, indicative foreign exchange rate (during Plan Acceptance) will be used for conversion. After all clearings are received, clearing foreign exchange rate will be used for conversion.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionAmount-1 | long | <b>  Conditional Mandatory Field  </b>: <br> The amount used in the Visa ISO transaction authorization and is represented as numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). + In case of <b>During Purchase scenario</b>, this value must be always provided. + In case of <b>Post Purchase scenario</b>, this value need not be provided and will internally be set as the sum of clearing amounts (<code>installmentTransactions.clearingAmount</code>).  When returned in the response body or callback notifications, + This field is populated if provided by the merchant/seller in the request and represents the transaction amount of the Visa ISO transaction authorization. + When returned to Issuer in multi-currency scenario, this field will populated in Issuer's currency. Before all clearings are received, indicative foreign exchange rate (during Plan Acceptance) will be used for conversion. After all clearings are received, clearing foreign exchange rate will be used for conversion.  |  |

#### PlanFeesForSeller-1 Schema

Fee rate table used to calculate the fees.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| type | string, <br>**Available values:** "CONSUMER", "CONSUMER_UPFRONT", "MERCHANT_FUNDING", "MERCHANT_SERVICE" | Fee types applicable for the Plan.  + "CONSUMER" - Fee for Consumer Funded Plan that consumer must pay to Issuer.  + "CONSUMER_UPFRONT" - Upfront fee that consumer must pay to Issuer.  + "MERCHANT_FUNDING" - Fee for Merchant Funded Plan that Merchant must pay to Issuer.  + "MERCHANT_SERVICE" - Service Fee charged to the merchant by Visa. <br>*Enum:* `"CONSUMER"`, `"CONSUMER_UPFRONT"`, `"MERCHANT_FUNDING"`, `"MERCHANT_SERVICE"`<br>*Example:* `"CONSUMER"` | No |
| flatFee | long | Flat fee applied on the first Installment payment in Issuer currency. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example).  + The currency field decides the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). If the currency is USD, “1034” is used for representing the amount "$10.34". + Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `13400` | No |
| ratePercentage | integer | Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 250 specifies 2.5%</b> + For calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code> <br>*Example:* `320` | No |

#### ProductType Schema

Product Type of the PAN.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ProductType | string, <br>**Available values:** "CREDIT", "DEBIT" | Product Type of the PAN. |  |

**Example**
<pre>DEBIT</pre>

#### PlanFlatFee Schema

Flat fee applied on the first Installment payment in Issuer currency.
The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example).

+ The currency field decides the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). If the currency is USD, “1034” is used for representing the amount "$10.34".
+ Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanFlatFee | long | Flat fee applied on the first Installment payment in Issuer currency. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example).  + The currency field decides the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). If the currency is USD, “1034” is used for representing the amount "$10.34". + Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

**Example**
<pre>13400</pre>

#### InstallmentMode Schema

Specifies the mode of installment. 
<br>
<b>Note:</b> This is an optional field, however it must be provided when Acquirer makes the call on behalf of the Merchant(OnUs Transactions) and in such cases it must be set to <code>DURING_PURCHASE</code>.
- "DURING_PURCHASE" - Indicates the installment is initiated during the purchase.
- "POST_PURCHASE" - Indicates the installment is initiated after the purchase.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentMode | string, <br>**Available values:** "DURING_PURCHASE", "POST_PURCHASE" | Specifies the mode of installment.  <br> <b>Note:</b> This is an optional field, however it must be provided when Acquirer makes the call on behalf of the Merchant(OnUs Transactions) and in such cases it must be set to <code>DURING_PURCHASE</code>. - "DURING_PURCHASE" - Indicates the installment is initiated during the purchase. - "POST_PURCHASE" - Indicates the installment is initiated after the purchase.  |  |

**Example**
<pre>DURING_PURCHASE</pre>

#### BaseInstallmentTransaction-1 Schema

This structure represents the fields required for identifying a Clearing.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clearingAmount | long | Clearing amount for the transaction in <code>settlementCurrency</code>. This field is used when the plan acceptance is associated with a clearing, most commonly used in a post-purchase use case. This field will be always populated by Visa Installments when clearing data is available.  | No |
| clearingDateTime | dateTime | Clearing date and time as set by the card network. This is the information in the clearing data sent to the issuers by the card network. This field will be always populated by Visa Installments when clearing data is available. + When returned in the HTTP response body or callback notifications,the time value will be defaulted to '00:00:00Z' when only clearing date is available from source system. + When used in the HTTP request body of an API request to Visa Installments, the value must conform to date-time format. <br>*Example:* `"2021-01-17T00:00:00Z"` | No |
| settlementCurrency | string | Currency of the clearing / settlement amount. Required when <code>clearingAmount</code> is present. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)  | No |
| ~~clearingSequenceNumber~~ | string | This field is deprecated and only supported for clients currently using it. New clients must not use this field.  Clearing sequence number, provided for multi-clearing scenarios - where a single transaction corresponds to multiple clearings. This field is used to identify the particular clearings associated with a plan acceptance when a partial transaction is used to associate with a plan acceptance. If this field is not provided, a sequence number is generated by Visa Installments. When used in the response for plan acceptances associated with a partial transactions, this field is populated. This field will be always populated by Visa Installments when clearing data is available. <b>When used in the request body for Visa Installment APIs it is highly recommended for the Visa partners to pass this in, if available. Otherwise, it will be generated by Visa Installments.</b> <br>*Example:* `"2"`<br>**Deprecated** | No |
| acquirerReferenceNumber | string | Acquirer Reference Number (ARN) is a 23-digit identification number associated with every draft and voucher. It consists of a Format Code, BASE Identification Number (BIN), Capture Date, Film Locator, and Check Digit. The ARN must be unique for each clearing. <br>*Example:* `"15524351474316171567231"` | No |

#### ForbiddenError-1 Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"Forbidden"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `403` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Forbidden"` | No |

#### FirstInstallment-1 Schema

Cost details (fee and principal) for the first Installment.

The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FirstInstallment-1 | { **"upfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the first Installment.  The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

#### BatchStatus Schema

Status of the submitted batch job. The results are available when the job is COMPLETED.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| BatchStatus | string, <br>**Available values:** "SUBMITTED", "COMPLETED" | Status of the submitted batch job. The results are available when the job is COMPLETED. |  |

**Example**
<pre>COMPLETED</pre>

#### PrePurchaseOptInDateTime Schema

Timestamp of the optin (from the consumer) for pre-purchase option for Installments.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PrePurchaseOptInDateTime | dateTime | Timestamp of the optin (from the consumer) for pre-purchase option for Installments. |  |

**Example**
<pre>2019-10-17T16:15:21Z</pre>

#### StandardError Schema

API errors are reported using a Standard Error Response structure. All errors are categorized into Standard errors and Business errors. Standard errors can be returned by any API and should be handled in a common way. Business errors are returned only by some APIs and are documented for each API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorResponse | { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } | Standard error response body provided when there is an error.  | No |

#### DeviceSoftwareID Schema

The unique name or id assigned to the software on the device

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| DeviceSoftwareID | string | The unique name or id assigned to the software on the device |  |

**Example**
<pre>SA2.0</pre>

#### ExternalKeyReference Schema

+ Meaningful only to the caller of this API
+ Used, optionally, to cross-reference with the keys between the request and response. Use numbers like '1', '2', etc.
+ If not present, the response will include the keys in the same order as the request

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ExternalKeyReference | string | + Meaningful only to the caller of this API + Used, optionally, to cross-reference with the keys between the request and response. Use numbers like '1', '2', etc. + If not present, the response will include the keys in the same order as the request  |  |

**Example**
<pre>1</pre>

#### PlanFeesForBilateral Schema

Fee rate table used to calculate the fees.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| type | string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "CONSUMER", "CONSUMER_UPFRONT", "ISSUER_TO_ACQUIRER", "APR" | Fee types applicable for Bilateral.<br>*Enum:* `"ACQUIRER_TO_ISSUER"`, `"CONSUMER"`, `"CONSUMER_UPFRONT"`, `"ISSUER_TO_ACQUIRER"`, `"APR"`<br>*Example:* `"ACQUIRER_TO_ISSUER"` | No |
| amount | long | Flat Fee for the Plan The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example).  + The currency field decides the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). If the currency is USD, “1034” is used for representing the amount "$10.34". + Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `500` | No |
| ratePercentage | integer | Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 250 specifies 2.5%</b> + For calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code> <br>*Example:* `320` | No |

#### TransactionSequenceNumber Schema

Transaction sequence number of this transaction when there are multiple clearings per Authorization. They are assumed to be in increments of 1 with no gaps. This is present only when there are multiple clearings per auth.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionSequenceNumber | integer | Transaction sequence number of this transaction when there are multiple clearings per Authorization. They are assumed to be in increments of 1 with no gaps. This is present only when there are multiple clearings per auth. |  |

**Example**
<pre>1</pre>

#### PlanAcceptanceStatus Schema

Specifies the status of the plan acceptance.
+ <code>CREATED</code>: The intial state, until <b>all</b> of the installment transactions are confirmed or cancelled or until transaction is associated to this plan acceptance.
+ <code>CANCELLED</code>: Plan acceptance is transitioned to this state when <b>all</b> of the installment transactions are cancelled
+ <code>CONFIRMED</code>: Plan acceptance is transitioned to this state when <b>all</b> of the installment transactions are confirmed
+ <code>UPDATED</code>: Plan acceptance is transitioned to this state from <code>CREATED</code> state when a transaction is associated to this plan acceptance

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanAcceptanceStatus | string, <br>**Available values:** "CREATED", "CANCELLED", "UPDATED", "CONFIRMED" | Specifies the status of the plan acceptance. + <code>CREATED</code>: The intial state, until <b>all</b> of the installment transactions are confirmed or cancelled or until transaction is associated to this plan acceptance. + <code>CANCELLED</code>: Plan acceptance is transitioned to this state when <b>all</b> of the installment transactions are cancelled + <code>CONFIRMED</code>: Plan acceptance is transitioned to this state when <b>all</b> of the installment transactions are confirmed + <code>UPDATED</code>: Plan acceptance is transitioned to this state from <code>CREATED</code> state when a transaction is associated to this plan acceptance  |  |

**Example**
<pre>CREATED</pre>

#### ExternalClientIdentifier Schema

Partner relationship ID. Relationship name identifier of the partner on whose behalf the API is called. This identifier is set up during client-partner relationship onboarding in Visa Developer Center.
<BR/>This value must only be provided when the API caller is invoking this API on behalf of some other partner.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ExternalClientIdentifier | string | Partner relationship ID. Relationship name identifier of the partner on whose behalf the API is called. This identifier is set up during client-partner relationship onboarding in Visa Developer Center. <BR/>This value must only be provided when the API caller is invoking this API on behalf of some other partner.  |  |

**Example**
<pre>31e9f2b5-d90d-089e-67a5-1f533b02d301</pre>

#### MerchantName Schema

Name of the merchant used for reporting purposes

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MerchantName | string | Name of the merchant used for reporting purposes |  |

**Example**
<pre>XYZ123</pre>

#### BaseBilateralPlan-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| fees | [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "CONSUMER", "CONSUMER_UPFRONT", "ISSUER_TO_ACQUIRER", "APR", **"amount"**: long, **"ratePercentage"**: integer } ] | Fees for Plan | No |
| name | string | Name of the installment plan. This may not be unique.<br>*Example:* `"The Market Plan"` | Yes |
| type | string, <br>**Available values:** "BI_LATERAL" | Type of the installment plan as configured in Visa Developer Center/Portal by the issuer.   + BI_LATERAL <table>   <thead>   <tr>     <td>Installment Plan Type</td>     <td>Party Responsible for Installment Funding Fees</td>     <td>Description</td>   </tr>   </thead>   <tbody>     <tr>       <td><code>BI_LATERAL</code></td>       <td>Dictated by the <code>fundedBy</code> value as the responsible party can be any of the following:       <ul>         <li>Merchant Participant</li>         <li>Seller</li>         <li>Consumer</li>         <li>Hybrid Arrangement where two parties are involved</li>       </ul>       </td>       <td>         <ul>         <li>Applies an Installment Funding Fee different from Market Rate Installment Funding Fee.</li>         <li>This Installment Funding Fee is agreed to between an Issuer and a Merchant Participant pursuant to a written agreement between the Merchant Participant and the Issuer.</li>         <li>These Installment Plans are available only to specific Merchant Participants which have a Bilateral Plan with the Issuer pursuant to an agreement with the Issuer.</li>         </ul>       </td>     </tr>   </tbody> </table> <br>*Enum:* `"BI_LATERAL"`<br>*Example:* `"BI_LATERAL"` | Yes |
| vPlanID | string (uuid) | Visa-generated identifier for an Installment plan<br>*Example:* `"9d16a09e-3812-4ce3-a258-9981cc13a1f3"` | Yes |
| currency | string | Plan Currency. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)  | No |
| fundedBy | [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ] | Party responsible for Installment Funding Fees of this plan. | Yes |
| issuerName | string | Name of the Issuer created this Plan<br>*Example:* `"Bank of VI"` | No |
| vPlanIDRef | string | A Visa-generated, alphanumeric, unique, and short human-readable friendly name for Installment Plan.This identifier is called Plan Registration System Identifier in Auth and Clearing messages. Reference - Field 104 in Auth.Base II TCR D Position 43-52.SMS Raw Data Financial Transaction record 5 -V22226.<br>*Example:* `"A123459876"` | No |
| promotionInfo | { **"promotionID"**: string, **"promotionCode"**: string } | This is the promotion information shared between the Issuer and Seller. | No |
| termsAndConditions | [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"longText"**: string, **"languageCode"**: string } ] | Plan terms and conditions as setup by Issuers in Plan configuration. There may be one terms and conditions per language. If there is only one setup, then there will be only one item in the array.  | Yes |
| effectiveDateRanges | [ { **"endDate"**: date, **"startDate"**: date } ] | Effective Date ranges of Bilateral Plan | Yes |
| planBilateralStatus | string, <br>**Available values:** "ACTIVE", "INACTIVE", "PENDING" | Indicates if the Bilateral plan has been opted in by the Seller. This value must be always provided for Bilateral plans and is not applicable for other type of plans  + "PENDING" - Bilateral Plan has not yet been opted in by Seller  + "ACTIVE" - Bilateral Plan has been opted in by/for Seller  + "INACTIVE" - Bilateral Plan has been opted out by/for Seller <br>*Enum:* `"ACTIVE"`, `"INACTIVE"`, `"PENDING"`<br>*Example:* `"ACTIVE"` | No |
| installmentFrequency | string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY" | Supported Tenure Types for a plan.<br>*Enum:* `"WEEKLY"`, `"BIWEEKLY"`, `"MONTHLY"`, `"BIMONTHLY"`<br>*Example:* `"WEEKLY"` | Yes |
| numberOfInstallments | number (integer) | Maximum number of installments that can be in the Plan Acceptance created from this plan.<br>*Example:* `10` | Yes |
| transactionAmountRanges | [ { **"maximumTransactionAmount"**: long, **"minimumTransactionAmount"**: long } ] | Transaction Amount Ranges | Yes |

#### BatchExecutionDateTime Schema

This is the execution date of the batch data.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| BatchExecutionDateTime | dateTime | This is the execution date of the batch data. |  |

**Example**
<pre>2021-01-17T16:15:21Z</pre>

#### EncryptedAccountNumbers Schema

A URL-safe base64-encoded JWE string representing a set of eligible cardholders (set of PANs) for batch enrollment.
<code>JWE<accountNumber[]></code> - This is an URL-safe base64 encoded string that represents the encrypted payload for a JSON array of accountNumbers.
The number of items in the JSON array must be between 1 to 2000.
The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding.
It is a standard JWT with a single custom claim, "accountNumbers" that is a JSON array of <code>'#/components/schemas/AccountNumber'</code>

<SchemaDefinition schemaRef='#/components/schemas/AccountNumber' />

Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details."

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EncryptedAccountNumbers | byte | A URL-safe base64-encoded JWE string representing a set of eligible cardholders (set of PANs) for batch enrollment. <code>JWE<accountNumber[]></code> - This is an URL-safe base64 encoded string that represents the encrypted payload for a JSON array of accountNumbers. The number of items in the JSON array must be between 1 to 2000. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom claim, "accountNumbers" that is a JSON array of <code>'#/components/schemas/AccountNumber'</code>  <SchemaDefinition schemaRef='#/components/schemas/AccountNumber' />  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details."  |  |

#### AnnualPercentageRate Schema

Annual Percentage Rate (APR) as configured by the Issuer during plan creation. This is not used for calculations, but used only for display purposes.
+ Interest fee rate in percentage applied on Installment payment.
+ Percentage rate and is a non-negative value.
+ The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 320 specifies 3.2%</b>
+ For your calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code>

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AnnualPercentageRate | integer | Annual Percentage Rate (APR) as configured by the Issuer during plan creation. This is not used for calculations, but used only for display purposes. + Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 320 specifies 3.2%</b> + For your calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code>  |  |

**Example**
<pre>320</pre>

#### OrderAmount Schema

The amount corresponding to the order for a Plan Acceptance. This is the max amount (within a certain tolerance percentage) that is enforced for all transactions added to this plan acceptance.
The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10".
Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.<br /><br />
In case of <b>Post Purchase scenario</b>, this value need not be provided and will internally be set as the sum of clearing amounts (<code>installmentTransactions.clearingAmount</code>).

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| OrderAmount | long | The amount corresponding to the order for a Plan Acceptance. This is the max amount (within a certain tolerance percentage) that is enforced for all transactions added to this plan acceptance. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10". Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.<br /><br /> In case of <b>Post Purchase scenario</b>, this value need not be provided and will internally be set as the sum of clearing amounts (<code>installmentTransactions.clearingAmount</code>).  |  |

#### PlanFeeRatePercentage Schema

Interest fee rate in percentage applied on Installment payment.
+ Percentage rate and is a non-negative value.
+ The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 250 specifies 2.5%</b>
+ For calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code>

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanFeeRatePercentage | integer | Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 250 specifies 2.5%</b> + For calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code>  |  |

**Example**
<pre>320</pre>

#### PlanAcceptanceIdentifier Schema

Visa-generated identifier for a plan acceptance

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanAcceptanceIdentifier | string (uuid) | Visa-generated identifier for a plan acceptance |  |

**Example**
<pre>31e9f2b5-d90d-089e-67a5-1f533b02d301</pre>

#### TransactionInfoWithRefundInstallmentTransaction-1 Schema

Transaction information that includes the associated transaction along multiple clearing info and refund details.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInfoWithRefundInstallmentTransaction-1 | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime } ], **"transactionRefundAmount"**: long } | Transaction information that includes the associated transaction along multiple clearing info and refund details.  |  |

#### Amount-1 Schema

+ All Amount fields use a representation in minor units only. For example, in Cents for USD currency
+ There are no fractional minor units; they are rounded to a whole number of minor units
+ The currency field contains the [<b>number of minor units (per ISO 4217)</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). For example, u201C123112u201D in USD represents the amount, USD 1231.12.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Amount-1 | long | + All Amount fields use a representation in minor units only. For example, in Cents for USD currency + There are no fractional minor units; they are rounded to a whole number of minor units + The currency field contains the [<b>number of minor units (per ISO 4217)</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). For example, u201C123112u201D in USD represents the amount, USD 1231.12.  |  |

**Example**
<pre>123112</pre>

#### InstallmentTransactionForResponse-1 Schema

Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or
many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example).
Represents the schedule of payments corresponding to a plan acceptance.
Clearing data will be always included when available.
<BR/><b>NOTES:</b>
+ When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body).
+ When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransactionForResponse-1 | { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } | Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example). Represents the schedule of payments corresponding to a plan acceptance. Clearing data will be always included when available. <BR/><b>NOTES:</b> + When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body). + When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.  |  |

#### PaymentAccountReference Schema

A Payment Account Reference (PAR) is a unique reference value associated with a specific card holder PAN. It identifies the card account, not just a card.
PAR is a non-payment identifier that can be associated to PANs and tokens, as defined by EMVCo.  PAR allows all participants in the payments chain to have a single, non-sensitive value assigned to a consumer. This value can be used in place of sensitive card holder identification fields, and transmitted across the payments ecosystem to facilitate card holder identification.
PAR has a well-defined format (as per the Jan 2016 EMVCo documentation):
- Fixed length of 29 characters
- All Uppercase, Roman, & Alphanumeric values
- 4-character BIN Controller ID assigned by EMVCo followed by a 25-character value

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PaymentAccountReference | string | A Payment Account Reference (PAR) is a unique reference value associated with a specific card holder PAN. It identifies the card account, not just a card. PAR is a non-payment identifier that can be associated to PANs and tokens, as defined by EMVCo.  PAR allows all participants in the payments chain to have a single, non-sensitive value assigned to a consumer. This value can be used in place of sensitive card holder identification fields, and transmitted across the payments ecosystem to facilitate card holder identification. PAR has a well-defined format (as per the Jan 2016 EMVCo documentation): - Fixed length of 29 characters - All Uppercase, Roman, & Alphanumeric values - 4-character BIN Controller ID assigned by EMVCo followed by a 25-character value  |  |

**Example**
<pre>V0010013820238835225373131610</pre>

#### PlanAcceptanceIdentifier-1 Schema

Visa-generated identifier for a plan acceptance

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanAcceptanceIdentifier-1 | string (uuid) | Visa-generated identifier for a plan acceptance |  |

#### TransactionRefundAmount-1 Schema

The amount used for partial or full cancellation of clearings associated with Visa ISO transaction.
The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10".
Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.

When used in the HTTP request body for Visa Installment APIs
  + This field will be used to specify the refund amount to be split across the associated clearing within a transaction.
  + If this field is not provided then all clearing associated with the transaction will be fully cancelled based on the Transaction Amount.

 When returned in the HTTP response body or callback notifications,
  + This field is populated if provided by the merchant/seller in the request and represents the refund amount that was split across the associated clearing within a transaction.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionRefundAmount-1 | long | The amount used for partial or full cancellation of clearings associated with Visa ISO transaction. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10". Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.  When used in the HTTP request body for Visa Installment APIs   + This field will be used to specify the refund amount to be split across the associated clearing within a transaction.   + If this field is not provided then all clearing associated with the transaction will be fully cancelled based on the Transaction Amount.   When returned in the HTTP response body or callback notifications,   + This field is populated if provided by the merchant/seller in the request and represents the refund amount that was split across the associated clearing within a transaction.  |  |

#### TransactionRefundAmountInSourceCurrency Schema

The amount (in source currency) used for partial or full cancellation of clearings associated with Visa ISO transaction.
The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10".
Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.

When used in the HTTP request body for Visa Installment APIs
+ This field will be used to specify the refund amount to be split across the associated clearing within a transaction.
+ If this field is not provided then all clearing associated with the transaction will be fully cancelled based on the Transaction Amount.

When returned in the HTTP response body or callback notifications,
+ This field is populated if provided by the merchant/seller in the request and represents the refund amount that was split across the associated clearing within a transaction.

When returned in API response or callback notification to Issuer (<b>During Purchase scenario</b>):
+ In multi-currency scenario, this field will be populated in source currency.

This field will not be returned to Issuer in <b>Post Purchase scenario</b>.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionRefundAmountInSourceCurrency | long | The amount (in source currency) used for partial or full cancellation of clearings associated with Visa ISO transaction. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10". Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.  When used in the HTTP request body for Visa Installment APIs + This field will be used to specify the refund amount to be split across the associated clearing within a transaction. + If this field is not provided then all clearing associated with the transaction will be fully cancelled based on the Transaction Amount.  When returned in the HTTP response body or callback notifications, + This field is populated if provided by the merchant/seller in the request and represents the refund amount that was split across the associated clearing within a transaction.  When returned in API response or callback notification to Issuer (<b>During Purchase scenario</b>): + In multi-currency scenario, this field will be populated in source currency.  This field will not be returned to Issuer in <b>Post Purchase scenario</b>.  |  |

#### NotFoundError Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"notFound"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `404` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"property not found"` | No |

#### BatchType Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| BatchType | string, <br>**Available values:** "CARDHOLDER_ENROLLMENT", "CARDHOLDER_ENROLLMENT_UPDATE", "CARDHOLDER_ENROLLMENT_DELETE", "PLAN_ACCEPTANCE_IRREGULAR_PAYMENTS", "CANDIDATES" |  |  |

**Example**
<pre>CANDIDATES</pre>

#### ErrorResponse Schema

Standard error response body provided when there is an error.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"invalidRequest"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `400` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Input parameters validation failed"` | No |

#### BaseOnboardingInformation Schema

Details required to Onboard a client associated with a Partner

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| city | string | Name of the merchant's city<br>*Example:* `"Foster City"` | No |
| phone | string | Client's primary phone number.  Client's primary phone number and the format is based on the countryCode field              <table>               <tr><th><b>countryCode</b></th><th><b>MinLength</b></th><th><b>MaxLength</b></th><th><b>Format</b></th></tr>               <tr>                 <td>                 <ul>                   <li>AU (Australia)</li>                   <li>CA (Canada)</li>                   <li>US (United States of America)</li>                 </ul>                 </td>                 <td>10</td>                 <td>16</td>                 <td>Allowed characters are digits, a hyphen, an open parenthesis, a close parenthesis, a dot, a plus sign, or whitespace.Example:+(001)-97444108</td>               </tr>              <tr>                 <td>                 <ul>                   <li>MY (Malaysia)</li>                   <li>MX (Mexico)</li>                   <li>NZ (New Zealand)</li>                 </ul>              </td>                 <td>3</td>                 <td>15</td>                 <td>Only digits are allowed.Example:0097444100888</td>               </tr>                 <tr>                   <td>Other Countries</td>                   <td>1</td>                   <td>16</td>                   <td>Only digits are allowed.Example:0097444100888</td>             </table>  | No |
| address1 | string | First line of the client's primary address. This value can be Alphabetic, numeric, or the following characters: spaces, ' (single quote), # (pound-sign or hash), , (comma), _ (underscore), : (colon), / (forward slash), and - (hyphen) <br>*Example:* `"1 Main Street"` | Yes |
| address2 | string | Second line of the client's primary address. It can be empty. This value can be Alphabetic, numeric, or the following characters: spaces, ' (single quote), # (pound-sign or hash), , (comma), _ (underscore), : (colon), / (forward slash), and - (hyphen) <br>*Example:* `"2nd Block"` | No |
| postalCode | string | Postal/Zip code of the merchant<br>*Example:* `"123456"` | No |
| countryCode | string | ISO Country code where the merchant is located in ISO 3166-2 (alpha) format<br>*Example:* `"CA"` | Yes |
| cardAcceptorId | string | Unique identifier that identifies the card acceptor operating the POS terminal. This field must contain an acquirer-assigned alphanumeric code that identifies the Card Acceptor(store/merchant transaction point). <br>*Example:* `"234568785"` | No |
| primaryLegalName | string | Legal name of client. This value must contain only English alphabets,numbers and space. <br>*Example:* `"ABZ Inc"` | Yes |
| primaryTradeName | string | Trade name of client, such as a doing business-as (DBA) name. If not specified, the legal name (companyPrimaryLegalName) is used by default. This value must contain only English alphabets,numbers and space. <br>*Example:* `"ABZ Traders"` | No |
| primaryWebsiteURL | string | URL of Clients's website. <br>*Example:* `"http://www.example.com"` | Yes |
| stateProvinceCode | string | State or province code associated with the physical address in the specified country. This value can be alphabetic, numeric, or the following characters: spaces, '(single quote), ,(comma), and -(hyphen).  Recommended to use the country subdivision codes defined in ISO-3166-2. (Note: must use ISO-3166-2 subdivision codes for AU, CA, and US).  Additional validations based on countryCode:  <table>   <tr><th><b>countryCode</b></th><th><b>Description</b></th></tr>   <tr>     <td>AU (Australia), CA (Canada), US (United States of America)</td>     <td>Must be a subdivision code (up to three characters) defined in ISO-3166-2. e.g. NSW (AU), QC (CA), DE (US)</td>   </tr> </table> <br>*Example:* `"QC"` | No |
| primaryContactEmail | string | Email address of Client's primary contact. This field is optional. Partners may choose not to provide the email address of their indirect merchants. <br>*Example:* `"test@xyz.com"` | No |
| primaryContactLastName | string | Surname of Client's primary contact person. Alphabetic or the following characters: spaces, ' (single quote), ` (back tick), ~ (tilde), " (double quote), . (period), and - (hyphen) <br>*Example:* `"Smith"` | No |
| onBehalfOfRelationships | [ { **"relationshipType"**: string, <br>**Available values:** "OBO_FUNDING_FEE_COLLECTOR", "OBO_SERVICE_FEE_COLLECTOR", **"partnerReferenceID"**: string, **"onBehalfOfReferenceID"**: string } ] | This field is used to specify third-party partners that perform operation on-behalf-of the client/merchant being onboarded.  | No |
| primaryContactFirstName | string | First name of Client's primary contact person. Alphabetic or the following characters: spaces, ' (single quote), ` (back tick), ~ (tilde), " (double quote), . (period), and - (hyphen) <br>*Example:* `"John"` | No |
| partnerMerchantReferenceID | string | Usually, this reference ID is assigned by the Partner but in cases where not provided when onboarding the Merchant, this value will be generated by Visa and provided to the Partner.  It is used by Visa for enforcing authorization (so that one Merchant's plan acceptance is not accessed/modified by an unauthorized merchant/partner), risk assessment and for instrumentation.   It is also used to serve bilateral plan agreements between a Seller and Issuer. In the future, it can be used to specify merchant-specific filters for installment plans.     - When provided in cancellation or search, this ID is used to match the plan acceptance and enforce authorization.    - When provided in plan selection (plan acceptance creation) API, it is used to later for authorization checks on cancel or search plan acceptances.    - When provided in plan match API, it is used for filter bilateral plans & instrumentation/reporting purposes. <br>*Example:* `"98243463"` | No |

#### TransactionInfoWithBasicInstallmentTransactionDetails Schema

Transaction information that includes the associated transaction and multiple clearing info.
When used in the response body, this field is provided when the clearing information is available.
When used in request body, this object will be used to specify the required transaction information used for plan acceptance creation.
It is highly recommended for the Visa partners to populate all the available fields in the transaction information during plan acceptance creation.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInfoWithBasicInstallmentTransactionDetails | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"installmentTransactions"**: [ { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } ] } | Transaction information that includes the associated transaction and multiple clearing info. When used in the response body, this field is provided when the clearing information is available. When used in request body, this object will be used to specify the required transaction information used for plan acceptance creation. It is highly recommended for the Visa partners to populate all the available fields in the transaction information during plan acceptance creation.  |  |

#### TotalRecurringFees Schema

Total recurring fees charged to the consumer for this Installment plan. This fee corresponds to the fee type <code>CONSUMER</code>.
The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TotalRecurringFees | long | Total recurring fees charged to the consumer for this Installment plan. This fee corresponds to the fee type <code>CONSUMER</code>. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

**Example**
<pre>2000</pre>

#### DevicePreferredName Schema

Preferred name of the Payment Terminal

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| DevicePreferredName | string | Preferred name of the Payment Terminal |  |

**Example**
<pre>BNPL TERMINAL</pre>

#### FeesAndCostForSeller-1 Schema

A list of applicable seller costs/fees for the Installment plan.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| feeInfo | [ { **"type"**: string, <br>**Available values:** "CONSUMER", "CONSUMER_UPFRONT", "MERCHANT_FUNDING", "MERCHANT_SERVICE", **"flatFee"**: long, **"ratePercentage"**: integer } ] | Fee rate table used to calculate the Seller fees.  + The feeInfo will contain an array of fee type(s) with the associated ratePercentage or flatFee.  + One or many of the fee types - <code>CONSUMER</code>, <code>CONSUMER_UPFRONT</code>, <code>MERCHANT_FUNDING</code> and <code>MERCHANT_SERVICE</code> might be present based on the plan type and plan setup.  + <code>MERCHANT_FUNDING</code> and <code>MERCHANT_SERVICE</code> appear only when the API request is initiated by Acquirers.  | Yes |
| currency | string | Currency used for all of the above amounts. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)  | Yes |
| totalFees | long | Total fees charged calculated as <code>totalUpfrontFees + totalRecurringFees</code> The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `50000` | Yes |
| totalPlanCost | long | Grand total of the entire plan cost including fees and the principal amounts across all Installment periods. It is calculated as <code>totalFees + (numberOfInstallments * installmentAmount)</code> The amount is represented in minor units. It is a numerical value in [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency (Cents for USD, for example). If the currency is USD, “61299” is used for representing the amount "$612.99". Note that there are no fractional minor units represented, they're rounded to the whole minor units.<br /> For <b>Canada</b>, total plan cost calculation includes small buffer value to ensure Merchant displays the highest possible value for the transaction at the time of checkout (Issuers are not expected to use the value). <br>*Example:* `612990` | Yes |
| lastInstallment | { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the last Installment. Note that the last Installment includes the balance of the rounding amounts when amount is split across various Installment periods. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  | Yes |
| firstInstallment | { **"upfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the first Installment.  The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  | Yes |
| totalUpfrontFees | long | Total upfront fees charged to the consumer for this Installment plan. This is the amount charged upfront along with the <b>first Installment principal</b> only. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `10000` | Yes |
| totalRecurringFees | long | Total recurring fees for this Installment plan. This is calculated as <code>numberOfInstallments * feePerInstallmentPeriod</code> The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `2000` | Yes |
| annualPercentageRate | integer | Annual Percentage Rate (APR) as configured by the Issuer during plan creation. This is not used for calculations, but used only for display purposes. + Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 320 specifies 3.2% + For your calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code> <br>*Example:* `320` | No |

#### TransactionInfoWithRefundInstallmentTransactionForLender Schema

Transaction information that includes the associated transaction along multiple clearing info and refund details.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInfoWithRefundInstallmentTransactionForLender | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"sourceCurrency"**: string, **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"sourceCurrency"**: string, **"clearingAmountInSourceCurrency"**: long } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime, **"refundAmountInSourceCurrency"**: long } ], **"transactionRefundAmount"**: long, **"transactionAmountInSourceCurrency"**: long, **"transactionRefundAmountInSourceCurrency"**: long } | Transaction information that includes the associated transaction along multiple clearing info and refund details.  |  |

#### PlanForSeller-1 Schema

Installment plan that has been matched against the eligibility criteria setup by the plan's issuer. The input for the matching criteria is provided by the Seller to Visa either during or after the purchase.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanForSeller-1 | { **"name"**: string, **"type"**: string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID", **"vPlanID"**: string (uuid), **"fundedBy"**: [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ], **"vPlanIDRef"**: string, **"islamicPlan"**: boolean, **"promotionInfo"**: { **"promotionID"**: string, **"promotionCode"**: string }, **"termsAndConditions"**: [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ], **"installmentFrequency"**: string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY", **"numberOfInstallments"**: number (integer) } & { **"costInfo"**: { **"feeInfo"**: [ { **"type"**: string, <br>**Available values:** "CONSUMER", "CONSUMER_UPFRONT", "MERCHANT_FUNDING", "MERCHANT_SERVICE", **"flatFee"**: long, **"ratePercentage"**: integer } ], **"currency"**: string, **"totalFees"**: long, **"totalPlanCost"**: long, **"lastInstallment"**: { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"firstInstallment"**: { **"upfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"totalUpfrontFees"**: long, **"totalRecurringFees"**: long, **"annualPercentageRate"**: integer } } | Installment plan that has been matched against the eligibility criteria setup by the plan's issuer. The input for the matching criteria is provided by the Seller to Visa either during or after the purchase. |  |

#### BaseBilateralPlan Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| fees | [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "CONSUMER", "CONSUMER_UPFRONT", "ISSUER_TO_ACQUIRER", "APR", **"amount"**: long, **"ratePercentage"**: integer } ] | Fees for Plan | No |
| name | string | Name of the installment plan. This may not be unique.<br>*Example:* `"The Market Plan"` | Yes |
| type | string, <br>**Available values:** "BI_LATERAL" | Type of the installment plan as configured in Visa Developer Center/Portal by the issuer.   + BI_LATERAL <table>   <thead>   <tr>     <td>Installment Plan Type</td>     <td>Party Responsible for Installment Funding Fees</td>     <td>Description</td>   </tr>   </thead>   <tbody>     <tr>       <td><code>BI_LATERAL</code></td>       <td>Dictated by the <code>fundedBy</code> value as the responsible party can be any of the following:       <ul>         <li>Merchant Participant</li>         <li>Seller</li>         <li>Consumer</li>         <li>Hybrid Arrangement where two parties are involved</li>       </ul>       </td>       <td>         <ul>         <li>Applies an Installment Funding Fee different from Market Rate Installment Funding Fee.</li>         <li>This Installment Funding Fee is agreed to between an Issuer and a Merchant Participant pursuant to a written agreement between the Merchant Participant and the Issuer.</li>         <li>These Installment Plans are available only to specific Merchant Participants which have a Bilateral Plan with the Issuer pursuant to an agreement with the Issuer.</li>         </ul>       </td>     </tr>   </tbody> </table> <br>*Enum:* `"BI_LATERAL"`<br>*Example:* `"BI_LATERAL"` | Yes |
| vPlanID | string (uuid) | Visa-generated identifier for an Installment plan<br>*Example:* `"9d16a09e-3812-4ce3-a258-9981cc13a1f3"` | Yes |
| currency | string | Plan Currency. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)  | No |
| fundedBy | [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ] | Party responsible for Installment Funding Fees of this plan. | Yes |
| issuerName | string | Name of the Issuer created this Plan<br>*Example:* `"Bank of VI"` | No |
| vPlanIDRef | string | A Visa-generated, alphanumeric, unique, and short human-readable friendly name for Installment Plan.This identifier is called Plan Registration System Identifier in Auth and Clearing messages. Reference - Field 104 in Auth.Base II TCR D Position 43-52.SMS Raw Data Financial Transaction record 5 -V22226.<br>*Example:* `"A123459876"` | Yes |
| promotionInfo | { **"promotionID"**: string, **"promotionCode"**: string } | This is the promotion information shared between the Issuer and Seller. | No |
| termsAndConditions | [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"longText"**: string, **"languageCode"**: string } ] | Plan terms and conditions as setup by Issuers in Plan configuration. There may be one terms and conditions per language. If there is only one setup, then there will be only one item in the array.  | Yes |
| effectiveDateRanges | [ { **"endDate"**: date, **"startDate"**: date } ] | Effective Date ranges of Bilateral Plan | Yes |
| planBilateralStatus | string, <br>**Available values:** "ACTIVE", "INACTIVE", "PENDING" | Indicates if the Bilateral plan has been opted in by the Seller. This value must be always provided for Bilateral plans and is not applicable for other type of plans  + "PENDING" - Bilateral Plan has not yet been opted in by Seller  + "ACTIVE" - Bilateral Plan has been opted in by/for Seller  + "INACTIVE" - Bilateral Plan has been opted out by/for Seller <br>*Enum:* `"ACTIVE"`, `"INACTIVE"`, `"PENDING"`<br>*Example:* `"ACTIVE"` | No |
| installmentFrequency | string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY" | Supported Tenure Types for a plan.<br>*Enum:* `"WEEKLY"`, `"BIWEEKLY"`, `"MONTHLY"`, `"BIMONTHLY"`<br>*Example:* `"WEEKLY"` | Yes |
| numberOfInstallments | number (integer) | Maximum number of installments that can be in the Plan Acceptance created from this plan.<br>*Example:* `10` | Yes |
| transactionAmountRanges | [ { **"maximumTransactionAmount"**: long, **"minimumTransactionAmount"**: long } ] | Transaction Amount Ranges | Yes |

#### NonVisaTransactionPageContentArrayItem Schema

Results of the Non-Visa transaction save action showing the errors, if any.
+  If there were any errors, then the <code>errorResponse</code> element must be present to describe the error.
+  If the transaction was successfully saved, then there will be no <code>errorResponse</code> element

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| type | string, <br>**Available values:** "AUTH", "AUTH_REVERSAL", "CS_SALES_DRAFT", "CS_CREDIT_VOUCHER", "CS_CASH_DISBURSEMENT", "CS_SALES_DRAFT_REVERSAL", "CS_CREDIT_VOUCHER_REVERAL", "CS_CASH_DISBURSEMENT_REVERSAL" | ISO Transaction or Settlement message type + AUTH - ISO 0100/0110 - Authorization request/response data for purchase, cash, balance inquiry, return of goods + AUTH_REVERSAL - ISO 400/410 - ISO  Reversal of an Authorization Request. Reversals are not the same as a merchandise return, but instead are used to reverse approved authorizations or financial transactions which are not completed due to unintended transactions. For example, when a merchant put the wrong dollar amount in an auth, the reversal ‘undoes’ it so that another auth message can be sent with the correct amount. + CS_SALES_DRAFT - TC 05 – Original purchase or representment; or dispute response financial + CS_CREDIT_VOUCHER - TC 06 – Original credit voucher or representment or dispute response financial; or original credit or representment + CS_CASH_DISBURSEMENT - TC 07 – Original cash disbursement/withdrawal or representment or dispute response financial + CS_SALES_DRAFT_REVERSAL - TC 25 – Reversal of an original purchase or representment or dispute response financial transaction + CS_CREDIT_VOUCHER_REVERAL - TC 26 – Reversal of an original credit voucher or representment or dispute response financial transaction; or original credit or representment transaction. + CS_CASH_DISBURSEMENT_REVERSAL - TC 27 – Reversal of an original cash disbursement/withdrawal transaction <br>*Enum:* `"AUTH"`, `"AUTH_REVERSAL"`, `"CS_SALES_DRAFT"`, `"CS_CREDIT_VOUCHER"`, `"CS_CASH_DISBURSEMENT"`, `"CS_SALES_DRAFT_REVERSAL"`, `"CS_CREDIT_VOUCHER_REVERAL"`, `"CS_CASH_DISBURSEMENT_REVERSAL"` | Yes |
| authCode | string | ISO transaction Auth Code (alphanumeric). This Field 38 in ISO 8583 contains the response identification assigned by the authorizing institution. <br>*Example:* `"05754C"` | Yes |
| cardBrand | string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA | The card network brand. When no value is set (or the field is not returned), it should be treated as VISA.<br>*Enum:* `"VISA"`, `"NON_VISA"`, `"MASTERCARD"`, `"AMERICAN_EXPRESS"`, `"DISCOVER"`, `"JCB"`, `"UNIONPAY"`, `"DINERSCLUB"` | Yes |
| errorResponse | { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } | Standard Error Response Body - Provided only when this transaction data has errors and was not successfully saved. | No |
| vPlanAcceptanceID | string (uuid) | Visa-generated identifier for a plan acceptance<br>*Example:* `"31e9f2b5-d90d-089e-67a5-1f533b02d301"` | Yes |
| paymentAccountReference | string | A Payment Account Reference (PAR) is a unique reference value associated with a specific card holder PAN. It identifies the card account, not just a card. PAR is a non-payment identifier that can be associated to PANs and tokens, as defined by EMVCo.  PAR allows all participants in the payments chain to have a single, non-sensitive value assigned to a consumer. This value can be used in place of sensitive card holder identification fields, and transmitted across the payments ecosystem to facilitate card holder identification. PAR has a well-defined format (as per the Jan 2016 EMVCo documentation): - Fixed length of 29 characters - All Uppercase, Roman, & Alphanumeric values - 4-character BIN Controller ID assigned by EMVCo followed by a 25-character value <br>*Example:* `"V0010013820238835225373131610"` | Yes |

#### InstallmentTransactionForResponseForLender Schema

Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or
many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example).
Represents the schedule of payments corresponding to a plan acceptance.
Clearing data will be always included when available.
<BR/><b>NOTES:</b>
+ When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body).
+ When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransactionForResponseForLender | { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"sourceCurrency"**: string, **"clearingAmountInSourceCurrency"**: long } | Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example). Represents the schedule of payments corresponding to a plan acceptance. Clearing data will be always included when available. <BR/><b>NOTES:</b> + When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body). + When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.  |  |

#### Preferences-1 Schema

Allows Seller Enablers to specify the Capabilities or Preferences of Merchants on behalf which this request is made. This must be used only when there is a need to
- <b>Override</b> an enabler's default config in Visa Installments
- Specify additional filters for cases in which Merchant needs special handling.

<p>
<b>Important:</b></p>
<b>This is an optional parameter which must be provided when required.
Please carefully go through the specific fields in this object to understand how this impacts your implementation.
</b>

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| capabilities | { **"visIndicatorCapability"**: string, <br>**Available values:** "SUPPORTED", "NOT_SUPPORTED" } | Capabilities of Merchant handled in this request.Valid in context of Enabler acting on behalf of Merchant | No |
| acceptanceChannel | string, <br>**Available values:** "IN_PERSON", "E_COMMERCE", <br>**Default:** IN_PERSON | Specifies the channel through which the transaction is initiated and payment information is collected.  - When specified in Eligibility requests this value indicates the merchant preferred channel for the transaction.  - When specified in Plan Acceptance request this value indicates the channel through which the transaction was made.  - Though optional highly recommended to provide this value and if not provided then Acceptance Channel would be considered as IN_PERSON option.  - "IN_PERSON" - Indicates transactions initiated via In-Store/Face-to-Face.  - "E_COMMERCE" - Indicates transactions initiated via e-commerce websites.  <b>Note:</b>       This field is technicallv optional to maintain backward compatibility and is defaulted to <code>IN_PERSON</code>.       When defaulted to <code>IN PERSON</code>, the merchants will not get installment offers with certain Issuers who are onlv enrolled for <code>E_COMMERCE</code> transaction and not <code>IN_PERSON</code> <br>*Enum:* `"IN_PERSON"`, `"E_COMMERCE"`<br>*Example:* `"E_COMMERCE"` | No |

#### BasePlan Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| name | string | Name of the installment plan. This may not be unique.<br>*Example:* `"The Market Plan"` | Yes |
| type | string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID" | Type of the installment plan as configured in Visa Developer Center/Portal by the issuer.   + MARKET   + BI_LATERAL   + ISSUER_DEFAULT   + ISSUER_PROMOTION   + ISSUER_HYBRID <table>   <thead>   <tr>     <td>Installment Plan Type</td>     <td>Party Responsible for Installment Funding Fees</td>     <td>Description</td>   </tr>   </thead>   <tbody>   <tr>     <td><code>MARKET</code></td>     <td>Dictated by the <code>fundedBy</code> value as the responsible party can be any of the following:     <ul>       <li>Merchant Participant</li>       <li>Seller</li>       <li>Consumer</li>       <li>Hybrid Arrangement where two parties are involved</li>     </ul>     </td>     <td>       <ul>       <li>Applies a Market Rate Installment Plan.</li>       <li>These are standardized Installment Plans recommended by Visa for defined tenures that Issuers may choose to provide to Eligible Cardholders by opting into Market Plans.</li>       <li>The Installment Funding Fee payable as dictated by <code>fundedBy</code> value for a Market Plan may vary by country and may be revised at Visa’s discretion</li>       </ul>     </td>   </tr>   <tr>     <td><code>BI_LATERAL</code></td>     <td>Dictated by the <code>fundedBy</code> value as the responsible party can be any of the following:     <ul>       <li>Merchant Participant</li>       <li>Seller</li>       <li>Consumer</li>       <li>Hybrid Arrangement where two parties are involved</li>     </ul>     </td>     <td>       <ul>       <li>Applies an Installment Funding Fee different from Market Rate Installment Funding Fee.</li>       <li>This Installment Funding Fee is agreed to between an Issuer and a Merchant Participant pursuant to a written agreement between the Merchant Participant and the Issuer.</li>       <li>These Installment Plans are available only to specific Merchant Participants which have a Bilateral Plan with the Issuer pursuant to an agreement with the Issuer.</li>       </ul>     </td>   </tr>   <tr>     <td><code>ISSUER_DEFAULT</code></td>     <td>Consumer-funded. This one is locked with the old behavior. <code>fundedBy</code> does not affect this category. This will remain funded by the Consumer.</td>     <td>       <ul>       <li>Applies an Installment Funding Fee applicable to the Consumer-Funded Plans.</li>       <li>These Installment Plans are available to all Merchant Participants to display to Eligible Cardholders.</li>       </ul>     </td>   </tr>   <tr>     <td><code>ISSUER_PROMOTION</code></td>     <td>Consumer-funded. This one is locked with the old behavior. <code>fundedBy</code> does not affect this category. This will remain funded by the Consumer.</td>     <td>       <ul>       <li>Applies a promotional rate as an Installment Funding Fee applicable to the Consumer-Funded Installment Plan.</li>       <li>An Issuer Promotion Plan must have an explicit expiration date.</li>       <li>These Installment Plans are available to all Merchant Participants to display to Eligible Cardholders</li>       </ul>     </td>   </tr>   <tr>     <td><code>ISSUER_HYBRID</code></td>     <td>This is a new category where the funding responsibility is shared between the Merchant and Consumer.</td>     <td>       <ul>       <li>Applies an Installment Funding Fee applicable to the Hybrid-Funded Plans.</li>       <li>These Installment Plans are available to all Merchant Participants to display to Eligible Cardholders.</li>       </ul>     </td>   </tr>   </tbody> </table> <br>*Enum:* `"MARKET"`, `"BI_LATERAL"`, `"ISSUER_DEFAULT"`, `"ISSUER_PROMOTION"`, `"ISSUER_HYBRID"`<br>*Example:* `"MARKET"` | Yes |
| vPlanID | string (uuid) | Visa-generated identifier for an Installment plan<br>*Example:* `"9d16a09e-3812-4ce3-a258-9981cc13a1f3"` | Yes |
| fundedBy | [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ] | Party responsible for Installment Funding Fees of this plan. | No |
| vPlanIDRef | string | A Visa-generated, alphanumeric, unique, and short human-readable friendly name for Installment Plan.This identifier is called Plan Registration System Identifier in Auth and Clearing messages. Reference - Field 104 in Auth.Base II TCR D Position 43-52.SMS Raw Data Financial Transaction record 5 -V22226.<br>*Example:* `"A123459876"` | Yes |
| islamicPlan | boolean | Indicates whether the Plan is an Islamic Plan. If this field is set to <code>true</code>, Plan should be displayed according to Shariah Banking principles, for example using the term <b>profit</b> instead of <b>interest</b>. If this field is not set (or not returned in response), it should be treated as <code>false</code> and the Plan is not an Islamic Plan.<br>*Example:* `false` | No |
| promotionInfo | { **"promotionID"**: string, **"promotionCode"**: string } | This is the promotion information shared between the Issuer and Seller. | No |
| termsAndConditions | [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ] | Plan terms and conditions as setup by Issuers in Plan configuration. There may be one terms and conditions per language. If there is only one setup, then there will be only one item in the array.  | Yes |
| installmentFrequency | string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY" | Supported Tenure Types for a plan.<br>*Enum:* `"WEEKLY"`, `"BIWEEKLY"`, `"MONTHLY"`, `"BIMONTHLY"`<br>*Example:* `"WEEKLY"` | Yes |
| numberOfInstallments | number (integer) | Maximum number of installments that can be in the Plan Acceptance created from this plan.<br>*Example:* `10` | Yes |

#### InstallmentTransactionStatusForNotification-1 Schema

Status of an ISO Transaction's Clearing associated with a plan acceptance.
+ "PENDING_AUTH" - Authorization is created and waiting for Auth match in Visa Installments.
+ "PENDING_CONFIRMATION" - Authorization received and waiting for clearing match in Visa Installments.
+ "CONFIRMED" - Clearing received and InstallmentTransaction is confirmed.
+ "PENDING_CANCELLATION" - Cancel request received and waiting for original clearing.
+ "CANCELLED" - Cancel request received and cancelled.
+ "PARTIALLY_REFUNDED" - Cancel request received and transaction amount partially refunded.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransactionStatusForNotification-1 | string, <br>**Available values:** "PENDING_AUTH", "PENDING_CONFIRMATION", "CONFIRMED", "PENDING_CANCELLATION", "CANCELLED", "PARTIALLY_REFUNDED" | Status of an ISO Transaction's Clearing associated with a plan acceptance. + "PENDING_AUTH" - Authorization is created and waiting for Auth match in Visa Installments. + "PENDING_CONFIRMATION" - Authorization received and waiting for clearing match in Visa Installments. + "CONFIRMED" - Clearing received and InstallmentTransaction is confirmed. + "PENDING_CANCELLATION" - Cancel request received and waiting for original clearing. + "CANCELLED" - Cancel request received and cancelled. + "PARTIALLY_REFUNDED" - Cancel request received and transaction amount partially refunded.  |  |

**Example**
<pre>PENDING_CONFIRMATION</pre>

#### ExtendedEligibilityEndDate Schema

Effective end date for cardholder extended eligibility enrollment. *This must be later than (midnight() UTC + 24 hours), otherwise a 400 error will be returned*
+ After this date, the extended eligibility is no longer effective for this cardholder.
+ This date *must not* be later than the enrollmentEndDate, when enrollmentEndDate is provided.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ExtendedEligibilityEndDate | dateTime | Effective end date for cardholder extended eligibility enrollment. *This must be later than (midnight() UTC + 24 hours), otherwise a 400 error will be returned* + After this date, the extended eligibility is no longer effective for this cardholder. + This date *must not* be later than the enrollmentEndDate, when enrollmentEndDate is provided.  |  |

**Example**
<pre>2019-10-17T16:15:21Z</pre>

#### BatchIdentifier Schema

Batch id of the request job submitted to Visa. This is the identifier for the batch request to be queried later to get the results.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| BatchIdentifier | string (uuid) | Batch id of the request job submitted to Visa. This is the identifier for the batch request to be queried later to get the results. |  |

**Example**
<pre>123e4567-e89b-12d3-a456-426614174000</pre>

#### UnauthorizedError Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"Unauthorized"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `401` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Unauthorized"` | No |

#### x_JWK Schema

EC x Coordinate in *base64Url* encoded value. Applicable only for EC key type.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| x_JWK | byte | EC x Coordinate in *base64Url* encoded value. Applicable only for EC key type.  |  |

#### EffectiveDateRange Schema

Plans Effective Start and End date range

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| endDate | date | Effective End date of the Plan.Plan end date as set by the Issuer.This can be null if there is no end date.  | No |
| startDate | date | Effective Start date of the Plan.Plan start date as set by the Issuer.  | Yes |

#### ExternalTransactionReference Schema

This is used by external clients as an opaque identifier and is sometimes used to correlate multiple transaction.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ExternalTransactionReference | string | This is used by external clients as an opaque identifier and is sometimes used to correlate multiple transaction. |  |

**Example**
<pre>17013357808877803992</pre>

#### EnrollmentTimestamp Schema

Timestamp of cardholder enrollment.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EnrollmentTimestamp | dateTime | Timestamp of cardholder enrollment. |  |

**Example**
<pre>2021-01-17T16:15:21Z</pre>

#### TransactionInfoWithInstallmentTransaction-1 Schema

Transaction information that includes the associated transaction and multiple clearing info.
When used in the response body, this field is provided when the clearing information is available.
When used in the request body, this field is to be used for specifying a clearing amount to be used for plan acceptance creation. This is most likely in a post-purchase use case.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInfoWithInstallmentTransaction-1 | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } ] } | Transaction information that includes the associated transaction and multiple clearing info. When used in the response body, this field is provided when the clearing information is available. When used in the request body, this field is to be used for specifying a clearing amount to be used for plan acceptance creation. This is most likely in a post-purchase use case.  |  |

#### ServiceUnavailableErrorResponse Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"notReady"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `503` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Service not ready"` | No |

#### BasePlan-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| name | string | Name of the installment plan. This may not be unique.<br>*Example:* `"The Market Plan"` | Yes |
| type | string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID" | Type of the installment plan as configured in Visa Developer Center/Portal by the issuer.   + MARKET   + BI_LATERAL   + ISSUER_DEFAULT   + ISSUER_PROMOTION   + ISSUER_HYBRID <table>   <thead>   <tr>     <td>Installment Plan Type</td>     <td>Party Responsible for Installment Funding Fees</td>     <td>Description</td>   </tr>   </thead>   <tbody>   <tr>     <td><code>MARKET</code></td>     <td>Dictated by the <code>fundedBy</code> value as the responsible party can be any of the following:     <ul>       <li>Merchant Participant</li>       <li>Seller</li>       <li>Consumer</li>       <li>Hybrid Arrangement where two parties are involved</li>     </ul>     </td>     <td>       <ul>       <li>Applies a Market Rate Installment Plan.</li>       <li>These are standardized Installment Plans recommended by Visa for defined tenures that Issuers may choose to provide to Eligible Cardholders by opting into Market Plans.</li>       <li>The Installment Funding Fee payable as dictated by <code>fundedBy</code> value for a Market Plan may vary by country and may be revised at Visa’s discretion</li>       </ul>     </td>   </tr>   <tr>     <td><code>BI_LATERAL</code></td>     <td>Dictated by the <code>fundedBy</code> value as the responsible party can be any of the following:     <ul>       <li>Merchant Participant</li>       <li>Seller</li>       <li>Consumer</li>       <li>Hybrid Arrangement where two parties are involved</li>     </ul>     </td>     <td>       <ul>       <li>Applies an Installment Funding Fee different from Market Rate Installment Funding Fee.</li>       <li>This Installment Funding Fee is agreed to between an Issuer and a Merchant Participant pursuant to a written agreement between the Merchant Participant and the Issuer.</li>       <li>These Installment Plans are available only to specific Merchant Participants which have a Bilateral Plan with the Issuer pursuant to an agreement with the Issuer.</li>       </ul>     </td>   </tr>   <tr>     <td><code>ISSUER_DEFAULT</code></td>     <td>Consumer-funded. This one is locked with the old behavior. <code>fundedBy</code> does not affect this category. This will remain funded by the Consumer.</td>     <td>       <ul>       <li>Applies an Installment Funding Fee applicable to the Consumer-Funded Plans.</li>       <li>These Installment Plans are available to all Merchant Participants to display to Eligible Cardholders.</li>       </ul>     </td>   </tr>   <tr>     <td><code>ISSUER_PROMOTION</code></td>     <td>Consumer-funded. This one is locked with the old behavior. <code>fundedBy</code> does not affect this category. This will remain funded by the Consumer.</td>     <td>       <ul>       <li>Applies a promotional rate as an Installment Funding Fee applicable to the Consumer-Funded Installment Plan.</li>       <li>An Issuer Promotion Plan must have an explicit expiration date.</li>       <li>These Installment Plans are available to all Merchant Participants to display to Eligible Cardholders</li>       </ul>     </td>   </tr>   <tr>     <td><code>ISSUER_HYBRID</code></td>     <td>This is a new category where the funding responsibility is shared between the Merchant and Consumer.</td>     <td>       <ul>       <li>Applies an Installment Funding Fee applicable to the Hybrid-Funded Plans.</li>       <li>These Installment Plans are available to all Merchant Participants to display to Eligible Cardholders.</li>       </ul>     </td>   </tr>   </tbody> </table> <br>*Enum:* `"MARKET"`, `"BI_LATERAL"`, `"ISSUER_DEFAULT"`, `"ISSUER_PROMOTION"`, `"ISSUER_HYBRID"`<br>*Example:* `"MARKET"` | No |
| vPlanID | string (uuid) | Visa-generated identifier for an Installment plan<br>*Example:* `"9d16a09e-3812-4ce3-a258-9981cc13a1f3"` | Yes |
| fundedBy | [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ] | Party responsible for Installment Funding Fees of this plan. | No |
| vPlanIDRef | string | A Visa-generated, alphanumeric, unique, and short human-readable friendly name for Installment Plan.This identifier is called Plan Registration System Identifier in Auth and Clearing messages. Reference - Field 104 in Auth.Base II TCR D Position 43-52.SMS Raw Data Financial Transaction record 5 -V22226.<br>*Example:* `"A123459876"` | No |
| islamicPlan | boolean | Indicates whether the Plan is an Islamic Plan. If this field is set to <code>true</code>, Plan should be displayed according to Shariah Banking principles, for example using the term <b>profit</b> instead of <b>interest</b>. If this field is not set (or not returned in response), it should be treated as <code>false</code> and the Plan is not an Islamic Plan.<br>*Example:* `false` | No |
| promotionInfo | { **"promotionID"**: string, **"promotionCode"**: string } | This is the promotion information shared between the Issuer and Seller. | No |
| termsAndConditions | [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ] | Plan terms and conditions as setup by Issuers in Plan configuration. There may be one terms and conditions per language. If there is only one setup, then there will be only one item in the array.  | Yes |
| installmentFrequency | string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY" | Supported Tenure Types for a plan.<br>*Enum:* `"WEEKLY"`, `"BIWEEKLY"`, `"MONTHLY"`, `"BIMONTHLY"`<br>*Example:* `"WEEKLY"` | Yes |
| numberOfInstallments | number (integer) | Maximum number of installments that can be in the Plan Acceptance created from this plan.<br>*Example:* `10` | Yes |

#### TransactionInformation-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInformation-1 | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } |  |  |

#### MerchantCountryCode Schema

ISO Country code where the merchant is located in ISO 3166-2 (alpha) format

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MerchantCountryCode | string | ISO Country code where the merchant is located in ISO 3166-2 (alpha) format |  |

**Example**
<pre>CA</pre>

#### DeviceAlias Schema

A supplementary ID for the device defined by the client/partner enrolling this device
+ Must be unique for this client/partner
+ An alias is analogous to the <code>vDeviceID</code> with the difference that it is assigned by the caller of this API
+ Examples of aliases might be serial numbers and IMEIs
+ The alias might be used to guarantee only one subject identity is created for the same physical device

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| DeviceAlias | string | A supplementary ID for the device defined by the client/partner enrolling this device + Must be unique for this client/partner + An alias is analogous to the <code>vDeviceID</code> with the difference that it is assigned by the caller of this API + Examples of aliases might be serial numbers and IMEIs + The alias might be used to guarantee only one subject identity is created for the same physical device  |  |

**Example**
<pre>990000862471854</pre>

#### EnrollmentProfileIdentifier Schema

Visa-generated Enrollment Profile Identifier

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EnrollmentProfileIdentifier | string (uuid) | Visa-generated Enrollment Profile Identifier |  |

**Example**
<pre>278a6873-9dc2-b466-284c-1d10ee797301</pre>

#### EncryptedAccountNumber Schema

JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber.
The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding.
It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.

Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EncryptedAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  |  |

#### PlanIDRef Schema

A Visa-generated, alphanumeric, unique, and short human-readable friendly name for Installment Plan.This identifier is called Plan Registration System Identifier in Auth and Clearing messages. Reference - Field 104 in Auth.Base II TCR D Position 43-52.SMS Raw Data Financial Transaction record 5 -V22226.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanIDRef | string | A Visa-generated, alphanumeric, unique, and short human-readable friendly name for Installment Plan.This identifier is called Plan Registration System Identifier in Auth and Clearing messages. Reference - Field 104 in Auth.Base II TCR D Position 43-52.SMS Raw Data Financial Transaction record 5 -V22226. |  |

**Example**
<pre>A123459876</pre>

#### MerchantInformation Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| category | string | The Merchant Category Code (MCC) is a four-digit number assigned to describe a merchant’s primary business based on annual sales volume measured in local currency. In addition, some MCCs identify a specific merchant or type of transaction. Visa and its members use MCC data for a range of purposes, including activity tracking, reporting, and risk management. Acquirers (and their agents) are required to assign the correct MCC to each of their merchants. Visa retains the right to require corrections to MCC assignments and use.  The MCCs and descriptions have been derived from Standard Industrial Classification (SIC) Codes and the International Organization for Standardization (ISO) Codes. Please note that Visa MCCs and SIC codes do not always correspond. In many cases, Visa has consolidated several SIC codes into one MCC to manage the number of MCCs. In other cases, such as for T&E and direct marketing merchants, Visa established MCCs that do not have corresponding SIC codes.  See [Visa Merchant Data Standards Manual](https://usa.visa.com/dam/VCOM/download/merchants/visa-merchant-data-standards-manual.pdf) for more info.  For information related to MCC codes, please navigate to [this link](https://www.visa.com/supplierlocator-app/app/#/home/supplier-locator) about Supplier Locator. <br>*Example:* `"3001"` | No |
| ~~merchantReferenceID~~ | string | When the seller provides this ID during plan match, it is used in an eligibility check to match the appropriate Installment plans. - When provided in cancellation or search, this ID is used to match the plan acceptances whose plans have this merchantReferenceID. - When provided in plan selection (plan acceptance creation) API, it is saved to be used later for search plan acceptances. - When provided in plan match API, it is used for instrumentation/reporting purposes. <br>*Example:* `"69847986"`<br>**Deprecated** | No |
| partnerMerchantReferenceID | string | <b>  Conditional Mandatory Field  </b>: This field is always 'required' when the API call is made by the (merchant) partner on behalf of the merchant.  Usually, this reference ID is assigned by the Partner but in cases where not provided when onboarding the Merchant, this value will be generated by Visa and provided to the Partner.  It is used by Visa for enforcing authorization (so that one Merchant's plan acceptance is not accessed/modified by an unauthorized merchant/partner), risk assessment and for instrumentation.  It is also used to serve bilateral plan agreements between a Seller and Issuer. In the future, it can be used to specify merchant-specific filters for installment plans.  - When provided in cancellation or search, this ID is used to match the plan acceptance and enforce authorization. - When provided in plan selection (plan acceptance creation) API, it is used to later for authorization checks on cancel or search plan acceptances. - When provided in plan match API, it is used for filter bilateral plans & instrumentation/reporting purposes.  | No |

#### InstallmentTransactionForNotification-1 Schema

Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or
many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example).
Represents the schedule of payments corresponding to a plan acceptance.
Clearing data will be always included when available.
<BR/><b>NOTES:</b>
+ When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body).
+ When used in the HTTP request body for Visa Installment APIs, only <code>clearingAmount</code> and <code>clearingDateTime</code> are required to be passed-in.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransactionForNotification-1 | { **"status"**: string, <br>**Available values:** "PENDING_AUTH", "PENDING_CONFIRMATION", "CONFIRMED", "PENDING_CANCELLATION", "CANCELLED", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime } | Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example). Represents the schedule of payments corresponding to a plan acceptance. Clearing data will be always included when available. <BR/><b>NOTES:</b> + When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body). + When used in the HTTP request body for Visa Installment APIs, only <code>clearingAmount</code> and <code>clearingDateTime</code> are required to be passed-in.  |  |

#### IslamicPlan Schema

Indicates whether the Plan is an Islamic Plan. If this field is set to <code>true</code>, Plan should be displayed according to Shariah Banking principles, for example using the term <b>profit</b> instead of <b>interest</b>. If this field is not set (or not returned in response), it should be treated as <code>false</code> and the Plan is not an Islamic Plan.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| IslamicPlan | boolean | Indicates whether the Plan is an Islamic Plan. If this field is set to <code>true</code>, Plan should be displayed according to Shariah Banking principles, for example using the term <b>profit</b> instead of <b>interest</b>. If this field is not set (or not returned in response), it should be treated as <code>false</code> and the Plan is not an Islamic Plan. |  |

**Example**
<pre>false</pre>

#### PlanFeesForSeller Schema

Fee rate table used to calculate the fees.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| type | string, <br>**Available values:** "CONSUMER", "CONSUMER_UPFRONT", "MERCHANT_FUNDING", "MERCHANT_SERVICE" | Fee types applicable for the Plan.  + "CONSUMER" - Fee for Consumer Funded Plan that consumer must pay to Issuer.  + "CONSUMER_UPFRONT" - Upfront fee that consumer must pay to Issuer.  + "MERCHANT_FUNDING" - Fee for Merchant Funded Plan that Merchant must pay to Issuer.  + "MERCHANT_SERVICE" - Service Fee charged to the merchant by Visa. <br>*Enum:* `"CONSUMER"`, `"CONSUMER_UPFRONT"`, `"MERCHANT_FUNDING"`, `"MERCHANT_SERVICE"`<br>*Example:* `"CONSUMER"` | No |
| flatFee | long | Flat fee applied on the first Installment payment in Issuer currency. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example).  + The currency field decides the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). If the currency is USD, “1034” is used for representing the amount "$10.34". + Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `13400` | No |
| ratePercentage | integer | Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 250 specifies 2.5%</b> + For calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code> <br>*Example:* `320` | No |
| monthlyRatePercentage | integer | Monthly interest fee rate in percentage applied on Installment payment. This will only be set for fee type "CONSUMER". + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 250 specifies 2.5%</b> + For calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code> <br>*Example:* `320` | No |

#### InstallmentTransaction-1 Schema

Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or
many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example).
Represents the schedule of payments corresponding to a plan acceptance.
Clearing data will be always included when available.
<BR/><b>NOTES:</b>
+ When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body).
+ When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransaction-1 | { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } | Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example). Represents the schedule of payments corresponding to a plan acceptance. Clearing data will be always included when available. <BR/><b>NOTES:</b> + When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body). + When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.  |  |

#### ForbiddenError Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ForbiddenError | { **"errorResponse"**: { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } } & { **"errorResponse"**: { **"reason"**: string, **"status"**: integer } } |  |  |

#### NonVisaAuthorizationData Schema

This is a subset of ISO 8583 Authorization Transaction Message fields for *non-Visa* cards as needed by installments application.
This structure is used in callback/webhook responses as it does not contain the account number info.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| NonVisaAuthorizationData | { **"type"**: string, <br>**Available values:** "AUTH", "AUTH_REVERSAL", "CS_SALES_DRAFT", "CS_CREDIT_VOUCHER", "CS_CASH_DISBURSEMENT", "CS_SALES_DRAFT_REVERSAL", "CS_CREDIT_VOUCHER_REVERAL", "CS_CASH_DISBURSEMENT_REVERSAL", **"authCode"**: string, **"category"**: string, **"cardBrand"**: string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA, **"merchantCity"**: string, **"merchantName"**: string, **"merchantState"**: string, **"vPlanAcceptanceID"**: string (uuid), **"merchantPostalCode"**: string, **"merchantCountryCode"**: string, **"paymentAccountReference"**: string, **"originatorTransactionReference"**: string } & { **"currency"**: string, **"billingAmount"**: long, **"billingCurrency"**: string, **"authorizationAmount"**: long, **"authorizationDateTime"**: dateTime } | This is a subset of ISO 8583 Authorization Transaction Message fields for *non-Visa* cards as needed by installments application. This structure is used in callback/webhook responses as it does not contain the account number info.  |  |

#### Preferences Schema

Allows Seller Enablers to specify the Capabilities or Preferences of Merchants on behalf which this request is made. This must be used only when there is a need to
- <b>Override</b> an enabler's default config in Visa Installments
- Specify additional filters for cases in which Merchant needs special handling.

<p>
<b>Important:</b></p>
<b>This is an optional parameter which must be provided when required.
Please carefully go through the specific fields in this object to understand how this impacts your implementation.
</b>

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| capabilities | { **"visIndicatorCapability"**: string, <br>**Available values:** "SUPPORTED", "NOT_SUPPORTED" } | Capabilities of Merchant handled in this request.Valid in context of Enabler acting on behalf of Merchant | No |
| installmentMode | string, <br>**Available values:** "DURING_PURCHASE", "POST_PURCHASE" | Specifies the mode of installment.  <br> <b>Note:</b> This is an optional field, however it must be provided when Acquirer makes the call on behalf of the Merchant(OnUs Transactions) and in such cases it must be set to <code>DURING_PURCHASE</code>. - "DURING_PURCHASE" - Indicates the installment is initiated during the purchase. - "POST_PURCHASE" - Indicates the installment is initiated after the purchase. <br>*Enum:* `"DURING_PURCHASE"`, `"POST_PURCHASE"`<br>*Example:* `"DURING_PURCHASE"` | No |
| acceptanceChannel | string, <br>**Available values:** "IN_PERSON", "E_COMMERCE", <br>**Default:** IN_PERSON | Specifies the channel through which the transaction is initiated and payment information is collected.  - When specified in Eligibility requests this value indicates the merchant preferred channel for the transaction.  - When specified in Plan Acceptance request this value indicates the channel through which the transaction was made.  - Though optional highly recommended to provide this value and if not provided then Acceptance Channel would be considered as IN_PERSON option.  - "IN_PERSON" - Indicates transactions initiated via In-Store/Face-to-Face.  - "E_COMMERCE" - Indicates transactions initiated via e-commerce websites.  <b>Note:</b>       This field is technicallv optional to maintain backward compatibility and is defaulted to <code>IN_PERSON</code>.       When defaulted to <code>IN PERSON</code>, the merchants will not get installment offers with certain Issuers who are onlv enrolled for <code>E_COMMERCE</code> transaction and not <code>IN_PERSON</code> <br>*Enum:* `"IN_PERSON"`, `"E_COMMERCE"`<br>*Example:* `"E_COMMERCE"` | No |

#### TotalFees-1 Schema

Total fees charged calculated as <code>totalUpfrontFees + totalRecurringFees</code>
The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TotalFees-1 | long | Total fees charged calculated as <code>totalUpfrontFees + totalRecurringFees</code> The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

**Example**
<pre>50000</pre>

#### AuthorizationCode Schema

ISO transaction auth code (alphanumeric)

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AuthorizationCode | string | ISO transaction auth code (alphanumeric) |  |

**Example**
<pre>05754C</pre>

#### ConsumerPreferences Schema

Installment preferences for the consumers.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| encAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  | Yes |
| prePurchaseOptIn | { **"vPlanID"**: string (uuid), **"optInDateTime"**: dateTime, **"acceptedTAndCVersion"**: integer } | Installment plans whose terms and conditions are accepted by the Consumer | Yes |

#### PlanDetailLevel Schema

Specifies the detail level of the plan to be returned in the API response. Not all plan detail levels are applicable to all types of roles.
For example, the full detail level is applicable only to Issuers.
+ <code>NONE</code>: Only planID and no other plan details are returned.
+ <code>SUMMARY</code>: Summary information about the plan with limited cost and fees are returned.
+ <code>FULL_DETAIL</code> Detailed plan information including all fees and cost.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanDetailLevel | string, <br>**Available values:** "NONE", "SUMMARY", "FULL_DETAIL", <br>**Default:** NONE | Specifies the detail level of the plan to be returned in the API response. Not all plan detail levels are applicable to all types of roles. For example, the full detail level is applicable only to Issuers. + <code>NONE</code>: Only planID and no other plan details are returned. + <code>SUMMARY</code>: Summary information about the plan with limited cost and fees are returned. + <code>FULL_DETAIL</code> Detailed plan information including all fees and cost.  |  |

**Example**
<pre>SUMMARY</pre>

#### KeyKind Schema

The type of the key. Used by Visa to determine the source of this key.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| KeyKind | string, <br>**Available values:** "REFID", "KEYID", <br>**Default:** KEYID | The type of the key. Used by Visa to determine the source of this key.  |  |

**Example**
<pre>KEYID</pre>

#### PlanAcceptanceForLender Schema

Plan acceptance created against an eligible plan after consumer accepts the plan terms and conditions.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "CREATED", "CANCELLED", "UPDATED", "CONFIRMED" | Specifies the status of the plan acceptance. + <code>CREATED</code>: The intial state, until <b>all</b> of the installment transactions are confirmed or cancelled or until transaction is associated to this plan acceptance. + <code>CANCELLED</code>: Plan acceptance is transitioned to this state when <b>all</b> of the installment transactions are cancelled + <code>CONFIRMED</code>: Plan acceptance is transitioned to this state when <b>all</b> of the installment transactions are confirmed + <code>UPDATED</code>: Plan acceptance is transitioned to this state from <code>CREATED</code> state when a transaction is associated to this plan acceptance <br>*Enum:* `"CREATED"`, `"CANCELLED"`, `"UPDATED"`, `"CONFIRMED"`<br>*Example:* `"CREATED"` | Yes |
| cardBrand | string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA | The card network brand. When no value is set (or the field is not returned), it should be treated as VISA.<br>*Enum:* `"VISA"`, `"NON_VISA"`, `"MASTERCARD"`, `"AMERICAN_EXPRESS"`, `"DISCOVER"`, `"JCB"`, `"UNIONPAY"`, `"DINERSCLUB"` | No |
| crossBorder | boolean | Indicates whether Plan Acceptance is Cross-Border<br>*Example:* `false` | No |
| transactions | [ { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"sourceCurrency"**: string, **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"sourceCurrency"**: string, **"clearingAmountInSourceCurrency"**: long } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime, **"refundAmountInSourceCurrency"**: long } ], **"transactionRefundAmount"**: long, **"transactionAmountInSourceCurrency"**: long, **"transactionRefundAmountInSourceCurrency"**: long } ], <br>**Default:**  | A list of Visa ISO transactions associated with this Installment PlanAcceptance.  | Yes |
| installmentPlan | { **"name"**: string, **"type"**: string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID", **"vPlanID"**: string (uuid), **"fundedBy"**: [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ], **"vPlanIDRef"**: string, **"islamicPlan"**: boolean, **"promotionInfo"**: { **"promotionID"**: string, **"promotionCode"**: string }, **"termsAndConditions"**: [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ], **"installmentFrequency"**: string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY", **"numberOfInstallments"**: number (integer) } & { **"costInfo"**: { **"feeInfo"**: [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "ACQUIRER_TO_VISA", "ISSUER_TO_ACQUIRER", "ISSUER_TO_VISA", "ISSUER_TO_VISA_SCHEDULING_FEES", **"flatFee"**: long, **"ratePercentage"**: integer } ], **"currency"**: string, **"totalFees"**: long, **"totalPlanCost"**: long, **"lastInstallment"**: { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"firstInstallment"**: { **"upfrontFee"**: long, **"totalAmountExcludingUpfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"totalUpfrontFees"**: long, **"totalRecurringFees"**: long, **"annualPercentageRate"**: integer } } | Installment Plan details relevant for issuer | Yes |
| encAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  | Yes |
| statusTransitions | { **"createdDateTime"**: string (date-time-ms-nooffset), **"updatedDateTime"**: string (date-time-ms-nooffset), **"confirmedDateTime"**: string (date-time-ms-nooffset), **"cancellationDateTime"**: string (date-time-ms-nooffset) } | The timestamps at which the Plan Acceptance status was updated. | Yes |
| vPlanAcceptanceID | string (uuid) | Visa-generated identifier for a plan acceptance<br>*Example:* `"31e9f2b5-d90d-089e-67a5-1f533b02d301"` | Yes |

#### AccountNumber Schema

PAN / Account Number / Card Number of the card to be enrolled

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AccountNumber | integer | PAN / Account Number / Card Number of the card to be enrolled |  |

**Example**
<pre>4036576265160027</pre>

#### TransactionAmountInSourceCurrency Schema

<b>  Conditional Mandatory Field  </b>:
<br>
The amount (in source currency) used in the Visa ISO transaction authorization and is represented as numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)).

When returned in API response or callback notification to Issuer (<b>During Purchase scenario</b>):
+ In multi-currency scenario, this field will be populated in source currency.

This field will not be returned to Issuer in <b>Post Purchase scenario</b>.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionAmountInSourceCurrency | long | <b>  Conditional Mandatory Field  </b>: <br> The amount (in source currency) used in the Visa ISO transaction authorization and is represented as numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)).  When returned in API response or callback notification to Issuer (<b>During Purchase scenario</b>): + In multi-currency scenario, this field will be populated in source currency.  This field will not be returned to Issuer in <b>Post Purchase scenario</b>.  |  |

#### FirstInstallment Schema

Cost details (fee and principal) for the first Installment.
The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FirstInstallment | { **"upfrontFee"**: long, **"totalAmountExcludingUpfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the first Installment. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

#### PlanNotFoundError Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"planNotFound"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `404` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"plan not found"` | No |

#### AcceptanceChannel Schema

Specifies the channel through which the transaction is initiated and payment information is collected.
 - When specified in Eligibility requests this value indicates the merchant preferred channel for the transaction.
 - When specified in Plan Acceptance request this value indicates the channel through which the transaction was made.
 - Though optional highly recommended to provide this value and if not provided then Acceptance Channel would be considered as IN_PERSON option.
 - "IN_PERSON" - Indicates transactions initiated via In-Store/Face-to-Face.
 - "E_COMMERCE" - Indicates transactions initiated via e-commerce websites.
 <b>Note:</b>
      This field is technicallv optional to maintain backward compatibility and is defaulted to <code>IN_PERSON</code>.
      When defaulted to <code>IN PERSON</code>, the merchants will not get installment offers with certain Issuers who are onlv enrolled for <code>E_COMMERCE</code> transaction and not <code>IN_PERSON</code>

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AcceptanceChannel | string, <br>**Available values:** "IN_PERSON", "E_COMMERCE", <br>**Default:** IN_PERSON | Specifies the channel through which the transaction is initiated and payment information is collected.  - When specified in Eligibility requests this value indicates the merchant preferred channel for the transaction.  - When specified in Plan Acceptance request this value indicates the channel through which the transaction was made.  - Though optional highly recommended to provide this value and if not provided then Acceptance Channel would be considered as IN_PERSON option.  - "IN_PERSON" - Indicates transactions initiated via In-Store/Face-to-Face.  - "E_COMMERCE" - Indicates transactions initiated via e-commerce websites.  <b>Note:</b>       This field is technicallv optional to maintain backward compatibility and is defaulted to <code>IN_PERSON</code>.       When defaulted to <code>IN PERSON</code>, the merchants will not get installment offers with certain Issuers who are onlv enrolled for <code>E_COMMERCE</code> transaction and not <code>IN_PERSON</code>  |  |

**Example**
<pre>E_COMMERCE</pre>

#### Capabilities Schema

Capabilities of Merchant handled in this request.Valid in context of Enabler acting on behalf of Merchant

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| visIndicatorCapability | string, <br>**Available values:** "SUPPORTED", "NOT_SUPPORTED" | Merchant Acquirer's VIS flag handling capability.<br>*Enum:* `"SUPPORTED"`, `"NOT_SUPPORTED"`<br>*Example:* `"SUPPORTED"` | No |

#### OrderInformation Schema

Order Information corresponding to the plan acceptance.
When this is provided, it is used to enforce the maximum amount applicable for this Plan Acceptance.
This field is required when there is no transactionInfo provided in this API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| currency | string | Currency of the order amount. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes) | Yes |
| orderAmount | long | The amount corresponding to the order for a Plan Acceptance. This is the max amount (within a certain tolerance percentage) that is enforced for all transactions added to this plan acceptance. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10". Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.<br /><br /> In case of <b>Post Purchase scenario</b>, this value need not be provided and will internally be set as the sum of clearing amounts (<code>installmentTransactions.clearingAmount</code>).  | Yes |

#### OriginalEncryptedSecondaryAccountNumber Schema

This is JWE encrypted Secondary PAN that was mapped to the Primary PAN at the point of Plan Acceptance. 
This will be populated only in cases when the Secondary PAN gets updated after the Plan Acceptance.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| OriginalEncryptedSecondaryAccountNumber | byte | This is JWE encrypted Secondary PAN that was mapped to the Primary PAN at the point of Plan Acceptance.  This will be populated only in cases when the Secondary PAN gets updated after the Plan Acceptance.  |  |

#### OriginatorTransactionReference Schema

Reference number allocated by the card acceptor to enable lookup of transaction for various use cases like disputes.
This can be the acquirer reference number for the transaction in case of CS data.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| OriginatorTransactionReference | string | Reference number allocated by the card acceptor to enable lookup of transaction for various use cases like disputes. This can be the acquirer reference number for the transaction in case of CS data.  |  |

#### TransactionMessageType Schema

ISO Transaction or Settlement message type
+ AUTH - ISO 0100/0110 - Authorization request/response data for purchase, cash, balance inquiry, return of goods
+ AUTH_REVERSAL - ISO 400/410 - ISO  Reversal of an Authorization Request. Reversals are not the same as a merchandise return, but instead are used to reverse approved authorizations or financial transactions which are not completed due to unintended transactions. For example, when a merchant put the wrong dollar amount in an auth, the reversal ‘undoes’ it so that another auth message can be sent with the correct amount.
+ CS_SALES_DRAFT - TC 05 – Original purchase or representment; or dispute response financial
+ CS_CREDIT_VOUCHER - TC 06 – Original credit voucher or representment or dispute response financial; or original credit or representment
+ CS_CASH_DISBURSEMENT - TC 07 – Original cash disbursement/withdrawal or representment or dispute response financial
+ CS_SALES_DRAFT_REVERSAL - TC 25 – Reversal of an original purchase or representment or dispute response financial transaction
+ CS_CREDIT_VOUCHER_REVERAL - TC 26 – Reversal of an original credit voucher or representment or dispute response financial transaction; or original credit or representment transaction.
+ CS_CASH_DISBURSEMENT_REVERSAL - TC 27 – Reversal of an original cash disbursement/withdrawal transaction

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionMessageType | string, <br>**Available values:** "AUTH", "AUTH_REVERSAL", "CS_SALES_DRAFT", "CS_CREDIT_VOUCHER", "CS_CASH_DISBURSEMENT", "CS_SALES_DRAFT_REVERSAL", "CS_CREDIT_VOUCHER_REVERAL", "CS_CASH_DISBURSEMENT_REVERSAL" | ISO Transaction or Settlement message type + AUTH - ISO 0100/0110 - Authorization request/response data for purchase, cash, balance inquiry, return of goods + AUTH_REVERSAL - ISO 400/410 - ISO  Reversal of an Authorization Request. Reversals are not the same as a merchandise return, but instead are used to reverse approved authorizations or financial transactions which are not completed due to unintended transactions. For example, when a merchant put the wrong dollar amount in an auth, the reversal ‘undoes’ it so that another auth message can be sent with the correct amount. + CS_SALES_DRAFT - TC 05 – Original purchase or representment; or dispute response financial + CS_CREDIT_VOUCHER - TC 06 – Original credit voucher or representment or dispute response financial; or original credit or representment + CS_CASH_DISBURSEMENT - TC 07 – Original cash disbursement/withdrawal or representment or dispute response financial + CS_SALES_DRAFT_REVERSAL - TC 25 – Reversal of an original purchase or representment or dispute response financial transaction + CS_CREDIT_VOUCHER_REVERAL - TC 26 – Reversal of an original credit voucher or representment or dispute response financial transaction; or original credit or representment transaction. + CS_CASH_DISBURSEMENT_REVERSAL - TC 27 – Reversal of an original cash disbursement/withdrawal transaction  |  |

#### PlanTAndCVersion Schema

Version of the Terms & Conditions accepted by the consumer. The version is auto-incremented every time an update is made to the Plan by the issuer in the Visa Developer Center/Portal UI.
This is same as <code>Plan.termsAndConditions[i].version</code> sent to the Seller in the response of the matched plans API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanTAndCVersion | integer | Version of the Terms & Conditions accepted by the consumer. The version is auto-incremented every time an update is made to the Plan by the issuer in the Visa Developer Center/Portal UI. This is same as <code>Plan.termsAndConditions[i].version</code> sent to the Seller in the response of the matched plans API.  |  |

**Example**
<pre>2</pre>

#### FeesAndCostForLender Schema

A list of applicable lender costs/fees for the Installment plan

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| feeInfo | [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "ACQUIRER_TO_VISA", "ISSUER_TO_ACQUIRER", "ISSUER_TO_VISA", "ISSUER_TO_VISA_SCHEDULING_FEES", **"flatFee"**: long, **"ratePercentage"**: integer } ] | Fee rate table used to calculate the Issuer fees. | Yes |
| currency | string | Currency used for all of the above amounts. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)  | Yes |
| totalFees | long | Total fees charged to the consumer, calculated as <code>totalUpfrontFees + totalRecurringFees</code>. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `50000` | Yes |
| totalPlanCost | long | Grand total of the entire plan cost including the principal amounts and total fees charged to the consumer, across all Installment periods. The amount is represented in minor units. It is a numerical value in [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency (Cents for USD, for example). If the currency is USD, “61299” is used for representing the amount "$612.99". Note that there are no fractional minor units represented, they're rounded to the whole minor units.<br /> For <b>Canada</b>, total plan cost calculation includes small buffer value to ensure Merchant displays the highest possible value for the transaction at the time of checkout (Issuers are not expected to use the value). <br>*Example:* `612990` | Yes |
| lastInstallment | { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the last Installment. Note that the last Installment includes the balance of the rounding amounts when amount is split across various Installment periods. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  | Yes |
| firstInstallment | { **"upfrontFee"**: long, **"totalAmountExcludingUpfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the first Installment. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  | Yes |
| totalUpfrontFees | long | Total upfront fees charged to the consumer for this Installment plan. This fee corresponds to the fee type <code>CONSUMER_UPFRONT</code>. This is the amount charged upfront along with the <b>first Installment principal</b> only. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `10000` | Yes |
| totalRecurringFees | long | Total recurring fees charged to the consumer for this Installment plan. This fee corresponds to the fee type <code>CONSUMER</code>. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `2000` | Yes |
| annualPercentageRate | integer | Annual Percentage Rate (APR) as configured by the Issuer during plan creation. This is not used for calculations, but used only for display purposes. + Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 320 specifies 3.2%</b> + For your calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code> <br>*Example:* `320` | No |

#### CategoryCode Schema

The Merchant Category Code (MCC) is a four-digit number assigned to describe a merchant’s primary business based on annual sales volume measured in local currency.
In addition, some MCCs identify a specific merchant or type of transaction. Visa and its members use MCC data for a range of purposes, including activity tracking, reporting, and risk management.
Acquirers (and their agents) are required to assign the correct MCC to each of their merchants. Visa retains the right to require corrections to MCC assignments and use.

The MCCs and descriptions have been derived from Standard Industrial Classification (SIC) Codes and the International Organization for Standardization (ISO) Codes.
Please note that Visa MCCs and SIC codes do not always correspond. In many cases, Visa has consolidated several SIC codes into one MCC to manage the number of MCCs.
In other cases, such as for T&E and direct marketing merchants, Visa established MCCs that do not have corresponding SIC codes.

See [Visa Merchant Data Standards Manual](https://usa.visa.com/dam/VCOM/download/merchants/visa-merchant-data-standards-manual.pdf) for more info.

For information related to MCC codes, please navigate to [this link](https://www.visa.com/supplierlocator-app/app/#/home/supplier-locator) about Supplier Locator.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CategoryCode | string | The Merchant Category Code (MCC) is a four-digit number assigned to describe a merchant’s primary business based on annual sales volume measured in local currency. In addition, some MCCs identify a specific merchant or type of transaction. Visa and its members use MCC data for a range of purposes, including activity tracking, reporting, and risk management. Acquirers (and their agents) are required to assign the correct MCC to each of their merchants. Visa retains the right to require corrections to MCC assignments and use.  The MCCs and descriptions have been derived from Standard Industrial Classification (SIC) Codes and the International Organization for Standardization (ISO) Codes. Please note that Visa MCCs and SIC codes do not always correspond. In many cases, Visa has consolidated several SIC codes into one MCC to manage the number of MCCs. In other cases, such as for T&E and direct marketing merchants, Visa established MCCs that do not have corresponding SIC codes.  See [Visa Merchant Data Standards Manual](https://usa.visa.com/dam/VCOM/download/merchants/visa-merchant-data-standards-manual.pdf) for more info.  For information related to MCC codes, please navigate to [this link](https://www.visa.com/supplierlocator-app/app/#/home/supplier-locator) about Supplier Locator.  |  |

**Example**
<pre>3001</pre>

#### BaseConsumerInformation Schema

Defines the cardholder/consumer that is initiating the creation of the plan acceptance or is selecting one of the eligible plans from the Seller.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| encAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  | No |
| tokenAccountNumber | string | EMVCo Token account number provisioned by Visa<br>*Example:* `"4024007133554278"` | No |
| vProvisionedTokenID | string | This is the token information corresponding to the PAN tokenized by the TokenRequester. The token requester is usually the seller.<br>*Example:* `"ac9e1cf6693c32cb7921112b7eb07d01"` | No |
| paymentAccountReference | string | A Payment Account Reference (PAR) is a unique reference value associated with a specific card holder PAN. It identifies the card account, not just a card. PAR is a non-payment identifier that can be associated to PANs and tokens, as defined by EMVCo.  PAR allows all participants in the payments chain to have a single, non-sensitive value assigned to a consumer. This value can be used in place of sensitive card holder identification fields, and transmitted across the payments ecosystem to facilitate card holder identification. PAR has a well-defined format (as per the Jan 2016 EMVCo documentation): - Fixed length of 29 characters - All Uppercase, Roman, & Alphanumeric values - 4-character BIN Controller ID assigned by EMVCo followed by a 25-character value <br>*Example:* `"V0010013820238835225373131610"` | No |

#### PlanForSeller Schema

Installment plan that has been matched against the eligibility criteria setup by the plan's issuer. The input for the matching criteria is provided by the Seller to Visa either during or after the purchase.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanForSeller | { **"name"**: string, **"type"**: string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID", **"vPlanID"**: string (uuid), **"fundedBy"**: [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ], **"vPlanIDRef"**: string, **"islamicPlan"**: boolean, **"promotionInfo"**: { **"promotionID"**: string, **"promotionCode"**: string }, **"termsAndConditions"**: [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ], **"installmentFrequency"**: string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY", **"numberOfInstallments"**: number (integer) } & { **"costInfo"**: { **"feeInfo"**: [ { **"type"**: string, <br>**Available values:** "CONSUMER", "CONSUMER_UPFRONT", "MERCHANT_FUNDING", "MERCHANT_SERVICE", **"flatFee"**: long, **"ratePercentage"**: integer, **"monthlyRatePercentage"**: integer } ], **"currency"**: string, **"totalFees"**: long, **"totalPlanCost"**: long, **"lastInstallment"**: { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"firstInstallment"**: { **"upfrontFee"**: long, **"totalAmountExcludingUpfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"totalUpfrontFees"**: long, **"totalRecurringFees"**: long, **"annualPercentageRate"**: integer } } | Installment plan that has been matched against the eligibility criteria setup by the plan's issuer. The input for the matching criteria is provided by the Seller to Visa either during or after the purchase. |  |

#### CardNetworkBrand Schema

The card network brand. When no value is set (or the field is not returned), it should be treated as VISA.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CardNetworkBrand | string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA | The card network brand. When no value is set (or the field is not returned), it should be treated as VISA. |  |

#### FeesAndCostForLender-1 Schema

A list of applicable lender costs/fees for the Installment plan

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| feeInfo | [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "ACQUIRER_TO_VISA", "ISSUER_TO_ACQUIRER", "ISSUER_TO_VISA", "ISSUER_TO_VISA_SCHEDULING_FEES", **"flatFee"**: long, **"ratePercentage"**: integer } ] | Fee rate table used to calculate the Issuer fees. | Yes |
| currency | string | Currency used for all of the above amounts. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)  | Yes |
| totalFees | long | Total fees charged calculated as <code>totalUpfrontFees + totalRecurringFees</code> The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `50000` | Yes |
| totalPlanCost | long | Grand total of the entire plan cost including fees and the principal amounts across all Installment periods. It is calculated as <code>totalFees + (numberOfInstallments * installmentAmount)</code> The amount is represented in minor units. It is a numerical value in [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency (Cents for USD, for example). If the currency is USD, “61299” is used for representing the amount "$612.99". Note that there are no fractional minor units represented, they're rounded to the whole minor units.<br /> For <b>Canada</b>, total plan cost calculation includes small buffer value to ensure Merchant displays the highest possible value for the transaction at the time of checkout (Issuers are not expected to use the value). <br>*Example:* `612990` | Yes |
| lastInstallment | { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the last Installment. Note that the last Installment includes the balance of the rounding amounts when amount is split across various Installment periods. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  | Yes |
| firstInstallment | { **"upfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the first Installment.  The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  | Yes |
| totalUpfrontFees | long | Total upfront fees charged to the consumer for this Installment plan. This is the amount charged upfront along with the <b>first Installment principal</b> only. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `10000` | Yes |
| totalRecurringFees | long | Total recurring fees for this Installment plan. This is calculated as <code>numberOfInstallments * feePerInstallmentPeriod</code> The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `2000` | Yes |
| annualPercentageRate | integer | Annual Percentage Rate (APR) as configured by the Issuer during plan creation. This is not used for calculations, but used only for display purposes. + Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 320 specifies 3.2% + For your calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code> <br>*Example:* `320` | No |

#### TooManyRequestsErrorResponse Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"rateLimitExceeded"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `429` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"rate Limit Exceeded for the request"` | No |

#### BatchNotFoundError Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"BatchNotFound"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `404` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"BatchID not found"` | No |

#### BaseTransactionInformation Schema

This structure represents the fields required for identifying a Visa transaction.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| authCode | string | ISO transaction auth code (alphanumeric)<br>*Example:* `"05754C"` | No |
| currency | string | <b>  Conditional Mandatory Field  </b>: Always required when <code>transactionAmount</code> is specified. Currency of <code>transactionAmount</code> and <code>transactionRefundAmount</code>. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes).  | No |
| vTransactionID | string | ISO Visa Authorization Transaction ID. + A unique value that Visa assigns to each transaction and returns to the acquirer in the authorization response. + Visa uses this value to maintain an audit trail throughout the life cycle of the transaction and all related transactions, such as reversals, adjustments, confirmations, and chargebacks. + In case of <b>Post Purchase scenario</b>, if Visa Transaction ID differs between authorization and clearing, this value should refer to clearing Visa Transaction ID. <br><b>Note:</b><br> In transactions using Mastercard credentials, where a single transaction ID is not available, Participants should use the Mastercard <code>Tran ID</code> field. <code>Tran ID</code> is made up of <code>Financial Network Code + Banknet Reference Number + MMDD(TransactionDate)</code>, concatenated with no spaces. <br>*Example:* `"460162701383910"` | No |
| externalTransactionRef | string | This is used by external clients as an opaque identifier and is sometimes used to correlate multiple transaction.<br>*Example:* `"17013357808877803992"` | No |

#### TransactionInfoWithBasicInstallmentTransactionDetails-1 Schema

Transaction information that includes the associated transaction and multiple clearing info.
When used in the response body, this field is provided when the clearing information is available.
When used in request body, this object will be used to specify the required transaction information used for plan acceptance creation.
It is highly recommended for the Visa partners to populate all the available fields in the transaction information during plan acceptance creation.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInfoWithBasicInstallmentTransactionDetails-1 | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"installmentTransactions"**: [ { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } ] } | Transaction information that includes the associated transaction and multiple clearing info. When used in the response body, this field is provided when the clearing information is available. When used in request body, this object will be used to specify the required transaction information used for plan acceptance creation. It is highly recommended for the Visa partners to populate all the available fields in the transaction information during plan acceptance creation.  |  |

#### EncryptedSecondaryAccountNumber Schema

JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber.
The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding.
It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.

Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EncryptedSecondaryAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  |  |

#### TotalUpfrontFees-1 Schema

Total upfront fees charged to the consumer for this Installment plan.
This is the amount charged upfront along with the <b>first Installment principal</b> only.
The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TotalUpfrontFees-1 | long | Total upfront fees charged to the consumer for this Installment plan. This is the amount charged upfront along with the <b>first Installment principal</b> only. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

**Example**
<pre>10000</pre>

#### y_JWK Schema

EC y Coordinate in *base64Url* encoded value. Applicable only for EC key type.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| y_JWK | byte | EC y Coordinate in *base64Url* encoded value. Applicable only for EC key type. |  |

#### MerchantState Schema

State where the merchant is located

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MerchantState | string | State where the merchant is located |  |

#### BasicNonVisaTransactionData Schema

This is a subset of common elements across ISO 8583 Authorization & Clearing Transaction Message fields for *non-Visa* cards as needed by installments application.
This structure is used in callback/webhook responses as it does not contain the account number info.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| type | string, <br>**Available values:** "AUTH", "AUTH_REVERSAL", "CS_SALES_DRAFT", "CS_CREDIT_VOUCHER", "CS_CASH_DISBURSEMENT", "CS_SALES_DRAFT_REVERSAL", "CS_CREDIT_VOUCHER_REVERAL", "CS_CASH_DISBURSEMENT_REVERSAL" | ISO Transaction or Settlement message type + AUTH - ISO 0100/0110 - Authorization request/response data for purchase, cash, balance inquiry, return of goods + AUTH_REVERSAL - ISO 400/410 - ISO  Reversal of an Authorization Request. Reversals are not the same as a merchandise return, but instead are used to reverse approved authorizations or financial transactions which are not completed due to unintended transactions. For example, when a merchant put the wrong dollar amount in an auth, the reversal ‘undoes’ it so that another auth message can be sent with the correct amount. + CS_SALES_DRAFT - TC 05 – Original purchase or representment; or dispute response financial + CS_CREDIT_VOUCHER - TC 06 – Original credit voucher or representment or dispute response financial; or original credit or representment + CS_CASH_DISBURSEMENT - TC 07 – Original cash disbursement/withdrawal or representment or dispute response financial + CS_SALES_DRAFT_REVERSAL - TC 25 – Reversal of an original purchase or representment or dispute response financial transaction + CS_CREDIT_VOUCHER_REVERAL - TC 26 – Reversal of an original credit voucher or representment or dispute response financial transaction; or original credit or representment transaction. + CS_CASH_DISBURSEMENT_REVERSAL - TC 27 – Reversal of an original cash disbursement/withdrawal transaction <br>*Enum:* `"AUTH"`, `"AUTH_REVERSAL"`, `"CS_SALES_DRAFT"`, `"CS_CREDIT_VOUCHER"`, `"CS_CASH_DISBURSEMENT"`, `"CS_SALES_DRAFT_REVERSAL"`, `"CS_CREDIT_VOUCHER_REVERAL"`, `"CS_CASH_DISBURSEMENT_REVERSAL"` | No |
| authCode | string | ISO transaction Auth Code (alphanumeric). This Field 38 in ISO 8583 contains the response identification assigned by the authorizing institution. <br>*Example:* `"05754C"` | No |
| category | string | The Merchant Category Code (MCC) is a four-digit number assigned to describe a merchant’s primary business based on annual sales volume measured in local currency. In addition, some MCCs identify a specific merchant or type of transaction. Visa and its members use MCC data for a range of purposes, including activity tracking, reporting, and risk management. Acquirers (and their agents) are required to assign the correct MCC to each of their merchants. Visa retains the right to require corrections to MCC assignments and use.  The MCCs and descriptions have been derived from Standard Industrial Classification (SIC) Codes and the International Organization for Standardization (ISO) Codes. Please note that Visa MCCs and SIC codes do not always correspond. In many cases, Visa has consolidated several SIC codes into one MCC to manage the number of MCCs. In other cases, such as for T&E and direct marketing merchants, Visa established MCCs that do not have corresponding SIC codes.  See [Visa Merchant Data Standards Manual](https://usa.visa.com/dam/VCOM/download/merchants/visa-merchant-data-standards-manual.pdf) for more info.  For information related to MCC codes, please navigate to [this link](https://www.visa.com/supplierlocator-app/app/#/home/supplier-locator) about Supplier Locator. <br>*Example:* `"3001"` | No |
| cardBrand | string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA | The card network brand. When no value is set (or the field is not returned), it should be treated as VISA.<br>*Enum:* `"VISA"`, `"NON_VISA"`, `"MASTERCARD"`, `"AMERICAN_EXPRESS"`, `"DISCOVER"`, `"JCB"`, `"UNIONPAY"`, `"DINERSCLUB"` | No |
| merchantCity | string | Name of the merchant's city<br>*Example:* `"Foster City"` | No |
| merchantName | string | Name of the merchant used for reporting purposes<br>*Example:* `"XYZ123"` | No |
| merchantState | string | State where the merchant is located | No |
| vPlanAcceptanceID | string (uuid) | Visa-generated identifier for a plan acceptance<br>*Example:* `"31e9f2b5-d90d-089e-67a5-1f533b02d301"` | No |
| merchantPostalCode | string | Postal/Zip code of the merchant<br>*Example:* `"123456"` | No |
| merchantCountryCode | string | ISO Country code where the merchant is located in ISO 3166-2 (alpha) format<br>*Example:* `"CA"` | No |
| paymentAccountReference | string | A Payment Account Reference (PAR) is a unique reference value associated with a specific card holder PAN. It identifies the card account, not just a card. PAR is a non-payment identifier that can be associated to PANs and tokens, as defined by EMVCo.  PAR allows all participants in the payments chain to have a single, non-sensitive value assigned to a consumer. This value can be used in place of sensitive card holder identification fields, and transmitted across the payments ecosystem to facilitate card holder identification. PAR has a well-defined format (as per the Jan 2016 EMVCo documentation): - Fixed length of 29 characters - All Uppercase, Roman, & Alphanumeric values - 4-character BIN Controller ID assigned by EMVCo followed by a 25-character value <br>*Example:* `"V0010013820238835225373131610"` | No |
| originatorTransactionReference | string | Reference number allocated by the card acceptor to enable lookup of transaction for various use cases like disputes. This can be the acquirer reference number for the transaction in case of CS data.  | No |

#### PlanAcceptanceNotFoundError Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"planAcceptanceNotFound"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `404` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"planAcceptance not found"` | No |

#### InstallmentTransactionStatus Schema

Status of the ISO Transaction's Clearing associated with a plan acceptance.
  + "CONFIRMED" - Clearing received and InstallmentTransaction is confirmed.
  + "CANCELLED" - Cancel request received and cancelled.
  + "PENDING_CONFIRMATION" - Authorization received and waiting for clearing match in Visa Installments.
  + "PENDING_CANCELLATION" - Cancel request received and waiting for original clearing.
  + "PARTIALLY_REFUNDED" - Cancel request received and transaction amount partially refunded.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransactionStatus | string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED" | Status of the ISO Transaction's Clearing associated with a plan acceptance.   + "CONFIRMED" - Clearing received and InstallmentTransaction is confirmed.   + "CANCELLED" - Cancel request received and cancelled.   + "PENDING_CONFIRMATION" - Authorization received and waiting for clearing match in Visa Installments.   + "PENDING_CANCELLATION" - Cancel request received and waiting for original clearing.   + "PARTIALLY_REFUNDED" - Cancel request received and transaction amount partially refunded.  |  |

**Example**
<pre>CONFIRMED</pre>

#### AccountRangeEnrollmentIdentifier Schema

Visa-generated identifier for a Account Range Enrollment

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AccountRangeEnrollmentIdentifier | string (uuid) | Visa-generated identifier for a Account Range Enrollment |  |

**Example**
<pre>cd15d26e-5a4e-4eb5-9c35-9cfb4cbca7ee</pre>

#### EnrollmentStatus Schema

Defined the enrollment status for each enrollment record. "NOT_ENROLLED" means the card holder is currently not enrolled or enrollment will end within 24 hours of enrollmentEndDate. "ERROR" means the card holder was not enrolled due to an error.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EnrollmentStatus | string, <br>**Available values:** "ENROLLED", "NOT_ENROLLED", "ERROR" | Defined the enrollment status for each enrollment record. "NOT_ENROLLED" means the card holder is currently not enrolled or enrollment will end within 24 hours of enrollmentEndDate. "ERROR" means the card holder was not enrolled due to an error. |  |

**Example**
<pre>ENROLLED</pre>

#### InstallmentCostDetails Schema

Cost details (fee and principal) for each Installment.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| amount | long | The principal amount for this Installment period. The currency is specified in the parent object that includes this structure. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `50000` | Yes |
| totalAmount | long | The total amount payable for this Installment period, inclusive of principal amount, consumer fee and any upfront fee. The currency is specified in the parent object that includes this structure. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `55000` | Yes |
| installmentFee | long | The consumer fee for this Installment period. This fee corresponds to the fee type <code>CONSUMER</code>. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `5000` | Yes |

#### RefundAmount-1 Schema

The amount used for partial or full cancellation of clearing.
This field will be always populated when clearing is in PARTIALLY_REFUNDED or fully CANCELLED state.
The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10".
Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RefundAmount-1 | long | The amount used for partial or full cancellation of clearing. This field will be always populated when clearing is in PARTIALLY_REFUNDED or fully CANCELLED state. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10". Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.  |  |

#### PlanAcceptanceStatusTransitions Schema

The timestamps at which the Plan Acceptance status was updated.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| createdDateTime | string (date-time-ms-nooffset) | When the plan acceptance was created/initiated from the Seller.<br>*Example:* `"2021-01-17T16:15:21.298"` | Yes |
| updatedDateTime | string (date-time-ms-nooffset) | When the plan acceptance was updated (associated with another ISO transaction). This field is present only if an additional ISO transaction was associated with this plan acceptance after creation.<br>*Example:* `"2021-01-17T16:15:21.298"` | No |
| confirmedDateTime | string (date-time-ms-nooffset) | When the plan acceptance was confirmed after the Visa ISO transaction clearing. This field is present only if the plan acceptance is confirmed.<br>*Example:* `"2021-01-17T16:15:21.298"` | No |
| cancellationDateTime | string (date-time-ms-nooffset) | When the plan acceptance was canceled before it was closed. This field is present only if the plan acceptance was canceled at some point.<br>*Example:* `"2021-01-17T16:15:21.298"` | No |

#### PromotionInformation Schema

This is the promotion information shared between the Issuer and Seller.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| promotionID | string | An opaque string (as an external identifier) provided by the issuer to Visa that identifies a program or promotion that is setup outside of Visa Installment Services. + Up to 8 alphanumeric characters + This identifier is used during plan search or eligibility checks. <br>*Example:* `"MBANK12"` | No |
| promotionCode | string | An opaque string (as an external identifier to this plan) provided by the issuer to Visa that identifies this Installment plan. + Up to 2 alphanumeric characters + It is typically shared to the Seller by the Financial Institution/Issuer so that it can be passed-in during eligibility checks or plan acceptance. <br>*Example:* `"A2"` | No |

#### PlanEndDate Schema

Effective End date of the Plan.Plan end date as set by the Issuer.This can be null if there is no end date.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanEndDate | date | Effective End date of the Plan.Plan end date as set by the Issuer.This can be null if there is no end date.  |  |

#### AccountRange Schema

Defines the set of cards corresponding to the enrollment profile. These account ranges are checked for ownership by the API caller; if not authorized, an HTTP 403 error is returned.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| max | string | The maximum of the account range to be included for PANs. All “wild card” digits in the account number should be filled with 0s.<br>*Example:* `"412667478532410943000"` | Yes |
| min | string | The minimum of the account range to be included for PANs. All “wild card” digits in the account number should be filled with 0s.<br>*Example:* `"412667478532410942000"` | Yes |

#### EnrollmentProfileIdentifier-1 Schema

Visa-generated Enrollment Profile Identifier

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EnrollmentProfileIdentifier-1 | string (uuid) | Visa-generated Enrollment Profile Identifier |  |

#### AccountRangeMin Schema

Minimum acceptable value in the defined Account Range Enrollment

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AccountRangeMin | string | Minimum acceptable value in the defined Account Range Enrollment |  |

**Example**
<pre>5236910248830000</pre>

#### BaseOnboardingInformation-1 Schema

Details required to Onboard a client associated with a Partner

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| city | string | Name of the merchant's city<br>*Example:* `"Foster City"` | No |
| phone | string | Client's primary phone number.  Client's primary phone number and the format is based on the countryCode field              <table>               <tr><th><b>countryCode</b></th><th><b>MinLength</b></th><th><b>MaxLength</b></th><th><b>Format</b></th></tr>               <tr>                 <td>                 <ul>                   <li>AU (Australia)</li>                   <li>CA (Canada)</li>                   <li>US (United States of America)</li>                 </ul>                 </td>                 <td>10</td>                 <td>16</td>                 <td>Allowed characters are digits, a hyphen, an open parenthesis, a close parenthesis, a dot, a plus sign, or whitespace.Example:+(001)-97444108</td>               </tr>              <tr>                 <td>                 <ul>                   <li>MY (Malaysia)</li>                   <li>MX (Mexico)</li>                   <li>NZ (New Zealand)</li>                 </ul>              </td>                 <td>3</td>                 <td>15</td>                 <td>Only digits are allowed.Example:0097444100888</td>               </tr>                 <tr>                   <td>Other Countries</td>                   <td>1</td>                   <td>16</td>                   <td>Only digits are allowed.Example:0097444100888</td>             </table>  | No |
| address1 | string | First line of the client's primary address. This value can be Alphabetic, numeric, or the following characters: spaces, ' (single quote), # (pound-sign or hash), , (comma), _ (underscore), : (colon), / (forward slash), and - (hyphen) <br>*Example:* `"1 Main Street"` | Yes |
| address2 | string | Second line of the client's primary address. It can be empty. This value can be Alphabetic, numeric, or the following characters: spaces, ' (single quote), # (pound-sign or hash), , (comma), _ (underscore), : (colon), / (forward slash), and - (hyphen) <br>*Example:* `"2nd Block"` | No |
| postalCode | string | Postal/Zip code of the merchant<br>*Example:* `"123456"` | No |
| countryCode | string | ISO Country code where the merchant is located in ISO 3166-2 (alpha) format<br>*Example:* `"CA"` | Yes |
| cardAcceptorId | string | Unique identifier that identifies the card acceptor operating the POS terminal. This field must contain an acquirer-assigned alphanumeric code that identifies the Card Acceptor(store/merchant transaction point). <br>*Example:* `"234568785"` | No |
| primaryLegalName | string | Legal name of client. This value must contain only English alphabets,numbers and space. <br>*Example:* `"ABZ Inc"` | Yes |
| primaryTradeName | string | Trade name of client, such as a doing business-as (DBA) name. If not specified, the legal name (companyPrimaryLegalName) is used by default. This value must contain only English alphabets,numbers and space. <br>*Example:* `"ABZ Traders"` | No |
| primaryWebsiteURL | string | URL of Clients's website. <br>*Example:* `"http://www.example.com"` | Yes |
| stateProvinceCode | string | State or province code associated with the physical address in the specified country. This value can be alphabetic, numeric, or the following characters: spaces, '(single quote), ,(comma), and -(hyphen).  Recommended to use the country subdivision codes defined in ISO-3166-2. (Note: must use ISO-3166-2 subdivision codes for AU, CA, and US).  Additional validations based on countryCode:  <table>   <tr><th><b>countryCode</b></th><th><b>Description</b></th></tr>   <tr>     <td>AU (Australia), CA (Canada), US (United States of America)</td>     <td>Must be a subdivision code (up to three characters) defined in ISO-3166-2. e.g. NSW (AU), QC (CA), DE (US)</td>   </tr> </table> <br>*Example:* `"QC"` | No |
| primaryContactEmail | string | Email address of Client's primary contact, which is also the user name for Visa portal access. <br>*Example:* `"test@xyz.com"` | No |
| primaryContactLastName | string | Surname of Client's primary contact person. Alphabetic or the following characters: spaces, ' (single quote), ` (back tick), ~ (tilde), " (double quote), . (period), and - (hyphen) <br>*Example:* `"Smith"` | No |
| primaryContactFirstName | string | First name of Client's primary contact person. Alphabetic or the following characters: spaces, ' (single quote), ` (back tick), ~ (tilde), " (double quote), . (period), and - (hyphen) <br>*Example:* `"John"` | No |
| partnerMerchantReferenceID | string | Usually, this reference ID is assigned by the Partner but in cases where not provided when onboarding the Merchant, this value will be generated by Visa and provided to the Partner.  It is used by Visa for enforcing authorization (so that one Merchant's plan acceptance is not accessed/modified by an unauthorized merchant/partner), risk assessment and for instrumentation.   It is also used to serve bilateral plan agreements between a Seller and Issuer. In the future, it can be used to specify merchant-specific filters for installment plans.     - When provided in cancellation or search, this ID is used to match the plan acceptance and enforce authorization.    - When provided in plan selection (plan acceptance creation) API, it is used to later for authorization checks on cancel or search plan acceptances.    - When provided in plan match API, it is used for filter bilateral plans & instrumentation/reporting purposes. <br>*Example:* `"98243463"` | No |

#### AccountRangeEnrollment Schema

Details of Account Range Enrollment in Installment

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accountRangeMax | string | Maximum acceptable value in the defined Account Range Enrollment<br>*Example:* `"5236910248839999"` | Yes |
| accountRangeMin | string | Minimum acceptable value in the defined Account Range Enrollment<br>*Example:* `"5236910248830000"` | Yes |
| vEnrollmentProfileID | string (uuid) | Visa-generated Enrollment Profile Identifier<br>*Example:* `"278a6873-9dc2-b466-284c-1d10ee797301"` | Yes |
| vAccountRangeEnrollmentID | string (uuid) | Visa-generated identifier for a Account Range Enrollment<br>*Example:* `"cd15d26e-5a4e-4eb5-9c35-9cfb4cbca7ee"` | Yes |

#### TransactionInfoWithRefundInstallmentTransaction Schema

Transaction information that includes the associated transaction along multiple clearing info and refund details.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInfoWithRefundInstallmentTransaction | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime } ], **"transactionRefundAmount"**: long } | Transaction information that includes the associated transaction along multiple clearing info and refund details.  |  |

#### BaseOnboardingInformation-2 Schema

Details required to Onboard a client associated with a Partner

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| city | string | Name of the merchant's city<br>*Example:* `"Foster City"` | No |
| phone | string | Client's primary phone number. This value can be  Numeric with hyphens, parentheses, period, or plus sign, valid for the companyCountryCode <br>*Example:* `"4155551212"` | No |
| address1 | string | First line of the client's primary address. This value can be Alphabetic, numeric, or the following characters: spaces, ' (single quote), # (pound-sign or hash), , (comma), _ (underscore), : (colon), / (forward slash), and - (hyphen) <br>*Example:* `"1 Main Street"` | Yes |
| address2 | string | Second line of the client's primary address. It can be empty. This value can be Alphabetic, numeric, or the following characters: spaces, ' (single quote), # (pound-sign or hash), , (comma), _ (underscore), : (colon), / (forward slash), and - (hyphen) <br>*Example:* `"2nd Block"` | No |
| postalCode | string | Postal/Zip code of the merchant<br>*Example:* `"123456"` | No |
| countryCode | string | ISO Country code where the merchant is located in ISO 3166-2 (alpha) format<br>*Example:* `"CA"` | Yes |
| cardAcceptorId | string | Unique identifier that identifies the card acceptor operating the POS terminal. This field must contain an acquirer-assigned alphanumeric code that identifies the Card Acceptor(store/merchant transaction point). <br>*Example:* `"234568785"` | No |
| primaryLegalName | string | Legal name of client. This value must contain only English alphabets,numbers and space. <br>*Example:* `"ABZ Inc"` | Yes |
| primaryTradeName | string | Trade name of client, such as a doing business-as (DBA) name. If not specified, the legal name (companyPrimaryLegalName) is used by default. This value must contain only English alphabets,numbers and space. <br>*Example:* `"ABZ Traders"` | No |
| primaryWebsiteURL | string | URL of Clients's website. <br>*Example:* `"http://www.example.com"` | Yes |
| stateProvinceCode | string | State or province code associated with the physical address in the specified country. This value can be alphabetic, numeric, or the following characters: spaces, '(single quote), ,(comma), and -(hyphen).  Recommended to use the country subdivision codes defined in ISO-3166-2. (Note: must use ISO-3166-2 subdivision codes for AU, CA, and US).  Additional validations based on countryCode:  <table>   <tr><th><b>countryCode</b></th><th><b>Description</b></th></tr>   <tr>     <td>AU (Australia), CA (Canada), US (United States of America)</td>     <td>Must be a subdivision code (up to three characters) defined in ISO-3166-2. e.g. NSW (AU), QC (CA), DE (US)</td>   </tr> </table> <br>*Example:* `"QC"` | No |
| primaryContactEmail | string | Email address of Client's primary contact, which is also the user name for Visa portal access. <br>*Example:* `"test@xyz.com"` | No |
| primaryContactLastName | string | Surname of Client's primary contact person. Alphabetic or the following characters: spaces, ' (single quote), ` (back tick), ~ (tilde), " (double quote), . (period), and - (hyphen) <br>*Example:* `"Smith"` | No |
| primaryContactFirstName | string | First name of Client's primary contact person. Alphabetic or the following characters: spaces, ' (single quote), ` (back tick), ~ (tilde), " (double quote), . (period), and - (hyphen) <br>*Example:* `"John"` | No |
| partnerMerchantReferenceID | string | Usually, this reference ID is assigned by the Partner but in cases where not provided when onboarding the Merchant, this value will be generated by Visa and provided to the Partner.  It is used by Visa for enforcing authorization (so that one Merchant's plan acceptance is not accessed/modified by an unauthorized merchant/partner), risk assessment and for instrumentation.   It is also used to serve bilateral plan agreements between a Seller and Issuer. In the future, it can be used to specify merchant-specific filters for installment plans.     - When provided in cancellation or search, this ID is used to match the plan acceptance and enforce authorization.    - When provided in plan selection (plan acceptance creation) API, it is used to later for authorization checks on cancel or search plan acceptances.    - When provided in plan match API, it is used for filter bilateral plans & instrumentation/reporting purposes. <br>*Example:* `"98243463"` | No |

#### InternalServerErrorResponse Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"serviceError"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `501` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"internal Service Error"` | No |

#### EffectiveEnrollmentUpdateDate Schema

Effective date for the enrollment profile Id update to be effective. *This must be later than (midnight() UTC + 24 hours), otherwise a 400 error will be returned*
*Required* and used only when <code>vEnrollmentProfileID</code> is updated for an already enrolled cardholder. Otherwise, this value is ignored.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EffectiveEnrollmentUpdateDate | date | Effective date for the enrollment profile Id update to be effective. *This must be later than (midnight() UTC + 24 hours), otherwise a 400 error will be returned* *Required* and used only when <code>vEnrollmentProfileID</code> is updated for an already enrolled cardholder. Otherwise, this value is ignored.  |  |

#### NonVisaClearingSettlementData Schema

This is a subset of Clearing / Settlement Transaction Message fields for *non-Visa* cards as needed by installments application.
This structure is used in callback/webhook responses as it does not contain the account number info.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| NonVisaClearingSettlementData | { **"type"**: string, <br>**Available values:** "AUTH", "AUTH_REVERSAL", "CS_SALES_DRAFT", "CS_CREDIT_VOUCHER", "CS_CASH_DISBURSEMENT", "CS_SALES_DRAFT_REVERSAL", "CS_CREDIT_VOUCHER_REVERAL", "CS_CASH_DISBURSEMENT_REVERSAL", **"authCode"**: string, **"category"**: string, **"cardBrand"**: string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA, **"merchantCity"**: string, **"merchantName"**: string, **"merchantState"**: string, **"vPlanAcceptanceID"**: string (uuid), **"merchantPostalCode"**: string, **"merchantCountryCode"**: string, **"paymentAccountReference"**: string, **"originatorTransactionReference"**: string } & { **"sequenceTotal"**: integer, **"sequenceNumber"**: integer, **"settlementAmount"**: long, **"settlementCurrency"**: string, **"settlementDateTime"**: dateTime, **"settlementBillingAmount"**: long, **"settlementBillingCurrency"**: string } | This is a subset of Clearing / Settlement Transaction Message fields for *non-Visa* cards as needed by installments application. This structure is used in callback/webhook responses as it does not contain the account number info.  |  |

#### EligibleTransaction Schema

Invoked whenever there are transactions eligible for Installment plans of cardholders already registered through a POST_PURCHASE Installment mode.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| cardBrand | string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA | The card network brand. When no value is set (or the field is not returned), it should be treated as VISA.<br>*Enum:* `"VISA"`, `"NON_VISA"`, `"MASTERCARD"`, `"AMERICAN_EXPRESS"`, `"DISCOVER"`, `"JCB"`, `"UNIONPAY"`, `"DINERSCLUB"` | No |
| matchedPlans | [ string (uuid) ] | List of eligible and active Installment Plans | Yes |
| transactionInfo | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } |  | Yes |
| encAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  | Yes |
| eligibilityDateTime | dateTime | Time when this eligibility was determined by Visa Installments<br>*Example:* `"2021-01-17T16:15:21Z"` | Yes |
| eligibilityExpiryDateTime | dateTime | Time when this eligibility expires<br>*Example:* `"2021-01-17T16:15:21Z"` | Yes |

#### TokenReferenceIdentifier Schema

Token Reference value for corresponding to the PAN tokenized by the TokenRequester. The token requester is usually the seller.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TokenReferenceIdentifier | string | Token Reference value for corresponding to the PAN tokenized by the TokenRequester. The token requester is usually the seller. |  |

**Example**
<pre>rf692we31cf6693c32cb7921112b7eb07d01</pre>

#### StandardError-1 Schema

API errors are reported using a Standard Error Response structure. All errors are categorized into Standard errors and Business errors. Standard errors can be returned by any API and should be handled in a common way. Business errors are returned only by some APIs and are documented for each API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorResponse | { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } | Standard Error Response Body | Yes |

#### KeyFunction Schema

The purpose of this key, which is  generated by the device.
+ Typically, device keys are used for <code>AUTHENTICITY</code>; that is, the Payment Terminal/device Public Key is associated to Payment Terminal/device Authentication
+ Typically, Visa keys are used for <code>AUTHENTICITY</code> and <code>KEY_AGREEMENT</code>
  + <code>AUTHENTICITY</code> for the Visa Public Key associated to Authenticated Message in Visa responses occurring during Payment Terminal/Device Authentication
  + <code>KEY_AGREEMENT</code> for the Visa Static Public Key associated to Key Agreement occurring during Payment Terminal/Device Authentication

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| KeyFunction | string, <br>**Available values:** "AUTHENTICITY", "KEY_AGREEMENT", <br>**Default:** KEY_AGREEMENT | The purpose of this key, which is  generated by the device. + Typically, device keys are used for <code>AUTHENTICITY</code>; that is, the Payment Terminal/device Public Key is associated to Payment Terminal/device Authentication + Typically, Visa keys are used for <code>AUTHENTICITY</code> and <code>KEY_AGREEMENT</code>   + <code>AUTHENTICITY</code> for the Visa Public Key associated to Authenticated Message in Visa responses occurring during Payment Terminal/Device Authentication   + <code>KEY_AGREEMENT</code> for the Visa Static Public Key associated to Key Agreement occurring during Payment Terminal/Device Authentication  |  |

**Example**
<pre>AUTHENTICITY</pre>

#### InstallmentTransactionStatusForNotification Schema

Status of an ISO Transaction's Clearing associated with a plan acceptance.
+ "PENDING_CONFIRMATION" - Authorization received and waiting for clearing match in Visa Installments. For Non-Visa based transactions, this should be used as a trigger to send the Auth/Clearing Feed to Visa Installments.
+ "CONFIRMED" - Clearing received and InstallmentTransaction is confirmed.
+ "PENDING_CANCELLATION" - Cancel request received and waiting for original clearing.
+ "CANCELLED" - Cancel request received and cancelled.
+ "PARTIALLY_REFUNDED" - Cancel request received and transaction amount partially refunded.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransactionStatusForNotification | string, <br>**Available values:** "PENDING_CONFIRMATION", "CONFIRMED", "PENDING_CANCELLATION", "CANCELLED", "PARTIALLY_REFUNDED" | Status of an ISO Transaction's Clearing associated with a plan acceptance. + "PENDING_CONFIRMATION" - Authorization received and waiting for clearing match in Visa Installments. For Non-Visa based transactions, this should be used as a trigger to send the Auth/Clearing Feed to Visa Installments. + "CONFIRMED" - Clearing received and InstallmentTransaction is confirmed. + "PENDING_CANCELLATION" - Cancel request received and waiting for original clearing. + "CANCELLED" - Cancel request received and cancelled. + "PARTIALLY_REFUNDED" - Cancel request received and transaction amount partially refunded.  |  |

**Example**
<pre>PENDING_CONFIRMATION</pre>

#### TotalPlanCost Schema

Grand total of the entire plan cost including the principal amounts and total fees charged to the consumer, across all Installment periods.
The amount is represented in minor units. It is a numerical value in [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency (Cents for USD, for example). If the currency is USD, “61299” is used for representing the amount "$612.99".
Note that there are no fractional minor units represented, they're rounded to the whole minor units.<br />
For <b>Canada</b>, total plan cost calculation includes small buffer value to ensure Merchant displays the highest possible value for the transaction at the time of checkout (Issuers are not expected to use the value).

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TotalPlanCost | long | Grand total of the entire plan cost including the principal amounts and total fees charged to the consumer, across all Installment periods. The amount is represented in minor units. It is a numerical value in [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency (Cents for USD, for example). If the currency is USD, “61299” is used for representing the amount "$612.99". Note that there are no fractional minor units represented, they're rounded to the whole minor units.<br /> For <b>Canada</b>, total plan cost calculation includes small buffer value to ensure Merchant displays the highest possible value for the transaction at the time of checkout (Issuers are not expected to use the value).  |  |

**Example**
<pre>612990</pre>

#### MessageMetadata Schema

Generic metadata that is always present for every postback message sent from Visa to the partners.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| type | string, <br>**Available values:** "BATCH_COMPLETED", "ELIGIBILITY", "PLANACCEPTANCE_STATUS_UPDATE", "INSTALLMENT_TRANSACTION_STATUS_UPDATE", "BILATERAL_PLAN_PARTNER_STATUS_UPDATE" | Type of the notification message. Here are the valid values:   +  <code>BATCH_COMPLETED</code> - For callback when a batch job is completed and results are available.   +  <code>ELIGIBILITY</code> - For callback when there are eligible transactions for post-purchase use cases.   +  <code>PLANACCEPTANCE_STATUS_UPDATE</code> - For callback when PlanAcceptance status is updated and the status updates are subscribed during onboarding.   +  <code>INSTALLMENT_TRANSACTION_STATUS_UPDATE</code> - For callback when Installment Transaction status is updated and the status updates are subscribed during onboarding.   +  <code>BILATERAL_PLAN_PARTNER_STATUS_UPDATE</code> - For callback when Bilateral Plan status is updated and the status updates are subscribed during onboarding. <br>*Enum:* `"BATCH_COMPLETED"`, `"ELIGIBILITY"`, `"PLANACCEPTANCE_STATUS_UPDATE"`, `"INSTALLMENT_TRANSACTION_STATUS_UPDATE"`, `"BILATERAL_PLAN_PARTNER_STATUS_UPDATE"`<br>*Example:* `"BATCH_COMPLETED"` | Yes |
| vMessageID | string (uuid) | Unique message identifier for all postback messages produced by Visa.<br>*Example:* `"173e4567-e89b-12d3-a456-426614174000"` | Yes |
| createdDateTime | string (date-time-nooffset) | Timestamp of the creation of this message<br>*Example:* `"2021-01-17T16:15:21"` | Yes |

#### Crv_JWK Schema

Applicable only for EC key type.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Crv_JWK | string, <br>**Available values:** "P-256", <br>**Default:** P-256 | Applicable only for EC key type. |  |

**Example**
<pre>P-256</pre>

#### FeesAndCostForSeller Schema

A list of applicable seller costs/fees for the Installment plan.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| feeInfo | [ { **"type"**: string, <br>**Available values:** "CONSUMER", "CONSUMER_UPFRONT", "MERCHANT_FUNDING", "MERCHANT_SERVICE", **"flatFee"**: long, **"ratePercentage"**: integer, **"monthlyRatePercentage"**: integer } ] | Fee rate table used to calculate the Seller fees.  + The feeInfo will contain an array of fee type(s) with the associated ratePercentage or flatFee.  + One or many of the fee types - <code>CONSUMER</code>, <code>CONSUMER_UPFRONT</code>, <code>MERCHANT_FUNDING</code> and <code>MERCHANT_SERVICE</code> might be present based on the plan type and plan setup.  + <code>MERCHANT_FUNDING</code> and <code>MERCHANT_SERVICE</code> appear only when the API request is initiated by Acquirers.  | Yes |
| currency | string | Currency used for all of the above amounts. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)  | Yes |
| totalFees | long | Total fees charged to the consumer, calculated as <code>totalUpfrontFees + totalRecurringFees</code>. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `50000` | Yes |
| totalPlanCost | long | Grand total of the entire plan cost including the principal amounts and total fees charged to the consumer, across all Installment periods. The amount is represented in minor units. It is a numerical value in [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency (Cents for USD, for example). If the currency is USD, “61299” is used for representing the amount "$612.99". Note that there are no fractional minor units represented, they're rounded to the whole minor units.<br /> For <b>Canada</b>, total plan cost calculation includes small buffer value to ensure Merchant displays the highest possible value for the transaction at the time of checkout (Issuers are not expected to use the value). <br>*Example:* `612990` | Yes |
| lastInstallment | { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the last Installment. Note that the last Installment includes the balance of the rounding amounts when amount is split across various Installment periods. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  | Yes |
| firstInstallment | { **"upfrontFee"**: long, **"totalAmountExcludingUpfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the first Installment. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  | Yes |
| totalUpfrontFees | long | Total upfront fees charged to the consumer for this Installment plan. This fee corresponds to the fee type <code>CONSUMER_UPFRONT</code>. This is the amount charged upfront along with the <b>first Installment principal</b> only. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `10000` | Yes |
| totalRecurringFees | long | Total recurring fees charged to the consumer for this Installment plan. This fee corresponds to the fee type <code>CONSUMER</code>. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `2000` | Yes |
| annualPercentageRate | integer | Annual Percentage Rate (APR) as configured by the Issuer during plan creation. This is not used for calculations, but used only for display purposes. + Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 320 specifies 3.2%</b> + For your calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code> <br>*Example:* `320` | No |

#### PlanAcceptanceTransactionSearchResultItem-1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanAcceptanceTransactionSearchResultItem-1 | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dormant"**: string, <br>**Available values:** "true", "false", <br>**Default:** false, **"cardBrand"**: string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA, **"vPlanIDRef"**: string, **"crossBorder"**: boolean, **"transactionAmount"**: long, **"vPlanAcceptanceID"**: string (uuid), **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime } ], **"transactionRefundAmount"**: long } |  |  |

#### PlanIdentifier Schema

Visa-generated identifier for an Installment plan

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanIdentifier | string (uuid) | Visa-generated identifier for an Installment plan |  |

**Example**
<pre>9d16a09e-3812-4ce3-a258-9981cc13a1f3</pre>

#### TotalRecurringFees-1 Schema

Total recurring fees for this Installment plan.
This is calculated as <code>numberOfInstallments * feePerInstallmentPeriod</code>
The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TotalRecurringFees-1 | long | Total recurring fees for this Installment plan. This is calculated as <code>numberOfInstallments * feePerInstallmentPeriod</code> The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

**Example**
<pre>2000</pre>

#### TransactionInfoWithPartialRefund Schema

Transaction information that includes the associated transaction and cancellation/refund details.
When used in the response body, this field is provided when the refund/cancellation information is available.
When used in the request body, this field is to be used for specifying a refund details(refund amount,reason,shipped status) to be used for refund .

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInfoWithPartialRefund | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"splitTransactionRefunds"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"refundAmount"**: long, **"refundReason"**: string, **"itemShippedStatus"**: string, <br>**Available values:** "SHIPPED", "NOT_SHIPPED", <br>**Default:** SHIPPED, **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } ], **"transactionRefundAmount"**: long } | Transaction information that includes the associated transaction and cancellation/refund details. When used in the response body, this field is provided when the refund/cancellation information is available. When used in the request body, this field is to be used for specifying a refund details(refund amount,reason,shipped status) to be used for refund .  |  |

#### DeviceSoftwareVersion Schema

Version associated with the client software (the software making oauth2 requests)
+ String that follows the versioning scheme, "<major_version>.<minor_version>[.<patch_version>]"
  + Where the alphabet for major_version, minor_version, and patch_version is only digits.
  + The patch version is optional
+ Versions must me incremental sequences as comparisons might be done on them in order to apply distinct logic
  + For comparison purposes the following conversion is done
    + Remove the '.' separating the minor and patch versions, if any, from the string
    + Convert the string into a float number
+ The device clients are responsible for defining their own version numbers as long as they adhere to the scheme

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| DeviceSoftwareVersion | string | Version associated with the client software (the software making oauth2 requests) + String that follows the versioning scheme, "<major_version>.<minor_version>[.<patch_version>]"   + Where the alphabet for major_version, minor_version, and patch_version is only digits.   + The patch version is optional + Versions must me incremental sequences as comparisons might be done on them in order to apply distinct logic   + For comparison purposes the following conversion is done     + Remove the '.' separating the minor and patch versions, if any, from the string     + Convert the string into a float number + The device clients are responsible for defining their own version numbers as long as they adhere to the scheme  |  |

**Example**
<pre>2.0.11</pre>

#### Amount Schema

+ All Amount fields use a representation in minor units only. For example, in Cents for USD currency
+ There are no fractional minor units; they are rounded to a whole number of minor units
+ The currency field contains the [<b>number of minor units (per ISO 4217)</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). For example, “123112” in USD represents the amount, USD 1231.12.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Amount | long | + All Amount fields use a representation in minor units only. For example, in Cents for USD currency + There are no fractional minor units; they are rounded to a whole number of minor units + The currency field contains the [<b>number of minor units (per ISO 4217)</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). For example, “123112” in USD represents the amount, USD 1231.12.  |  |

**Example**
<pre>123112</pre>

#### RefundAmount Schema

The amount used for partial or full cancellation of clearing.
This field will be always populated when clearing is in PARTIALLY_REFUNDED or fully CANCELLED state.
The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10".
Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.

When requested in API request from Merchant (<b>During Purchase scenario</b>):
+ In multi-currency scenario, this field should be populated in source currency.

When returned in API response or callback notification (<b>During Purchase scenario</b>):
+ When returned to Merchant in multi-currency scenario, this field will be populated in source currency.
+ When returned to Issuer in multi-currency scenario, this field will be populated in Issuer's currency.

When requested in API request from Issuer (<b>Post Purchase scenario</b>):
+ In multi-currency scenario, this field should be populated in Issuer's currency.

When returned in API response or callback notification to Issuer (<b>Post Purchase scenario</b>):
+ In multi-currency scenario, this field will be populated in Issuer's currency.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RefundAmount | long | The amount used for partial or full cancellation of clearing. This field will be always populated when clearing is in PARTIALLY_REFUNDED or fully CANCELLED state. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10". Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.  When requested in API request from Merchant (<b>During Purchase scenario</b>): + In multi-currency scenario, this field should be populated in source currency.  When returned in API response or callback notification (<b>During Purchase scenario</b>): + When returned to Merchant in multi-currency scenario, this field will be populated in source currency. + When returned to Issuer in multi-currency scenario, this field will be populated in Issuer's currency.  When requested in API request from Issuer (<b>Post Purchase scenario</b>): + In multi-currency scenario, this field should be populated in Issuer's currency.  When returned in API response or callback notification to Issuer (<b>Post Purchase scenario</b>): + In multi-currency scenario, this field will be populated in Issuer's currency.  |  |

#### PrePurchaseOptIn Schema

Installment plans whose terms and conditions are accepted by the Consumer

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| vPlanID | string (uuid) | Visa-generated identifier for an Installment plan<br>*Example:* `"9d16a09e-3812-4ce3-a258-9981cc13a1f3"` | Yes |
| optInDateTime | dateTime | Timestamp of the optin (from the consumer) for pre-purchase option for Installments.<br>*Example:* `"2019-10-17T16:15:21Z"` | Yes |
| acceptedTAndCVersion | integer | Version of the Terms & Conditions accepted by the consumer. The version is auto-incremented every time an update is made to the Plan by the issuer in the Visa Developer Center/Portal UI. This is same as <code>Plan.termsAndConditions[i].version</code> sent to the Seller in the response of the matched plans API. <br>*Example:* `2` | Yes |

#### PlanForLender-1 Schema

Installment Plan details relevant for issuer

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanForLender-1 | { **"name"**: string, **"type"**: string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID", **"vPlanID"**: string (uuid), **"fundedBy"**: [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ], **"vPlanIDRef"**: string, **"islamicPlan"**: boolean, **"promotionInfo"**: { **"promotionID"**: string, **"promotionCode"**: string }, **"termsAndConditions"**: [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ], **"installmentFrequency"**: string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY", **"numberOfInstallments"**: number (integer) } & { **"costInfo"**: { **"feeInfo"**: [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "ACQUIRER_TO_VISA", "ISSUER_TO_ACQUIRER", "ISSUER_TO_VISA", "ISSUER_TO_VISA_SCHEDULING_FEES", **"flatFee"**: long, **"ratePercentage"**: integer } ], **"currency"**: string, **"totalFees"**: long, **"totalPlanCost"**: long, **"lastInstallment"**: { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"firstInstallment"**: { **"upfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"totalUpfrontFees"**: long, **"totalRecurringFees"**: long, **"annualPercentageRate"**: integer } } | Installment Plan details relevant for issuer |  |

#### BaseInstallmentTransaction Schema

This structure represents the fields required for identifying a Clearing.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| clearingAmount | long | Clearing amount for the transaction. This field will always be populated by Visa Installments when clearing data is available. This field is also used to create Plan Acceptance for a clearing in <b>Post Purchase scenario</b>.  When returned in API response or callback notification (<b>During Purchase scenario</b>): + When returned to Merchant in multi-currency scenario, this field will be populated in source currency. + When returned to Issuer in multi-currency scenario, this field will be populated in Issuer's currency.  When requested in API request from Issuer (<b>Post Purchase scenario</b>): + This field must always be provided. + In multi-currency scenario, this field should be populated in Issuer's currency.  When returned in API response or callback notification to Issuer (<b>Post Purchase scenario</b>): + In multi-currency scenario, this field will be populated in Issuer's currency.  | No |
| clearingDateTime | dateTime | Clearing date and time as set by the card network. This is the information in the clearing data sent to the issuers by the card network. This field will be always populated by Visa Installments when clearing data is available. + When returned in the HTTP response body or callback notifications,the time value will be defaulted to '00:00:00Z' when only clearing date is available from source system. + When used in the HTTP request body of an API request to Visa Installments, the value must conform to date-time format. <br>*Example:* `"2021-01-17T00:00:00Z"` | No |
| settlementCurrency | string | Always required when <code>clearingAmount</code> is specified. Currency of <code>clearingAmount</code> and <code>refundAmount</code>. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes).  | No |
| ~~clearingSequenceNumber~~ | string | This field is deprecated and only supported for clients currently using it. New clients must not use this field.  Clearing sequence number, provided for multi-clearing scenarios - where a single transaction corresponds to multiple clearings. This field is used to identify the particular clearings associated with a plan acceptance when a partial transaction is used to associate with a plan acceptance. If this field is not provided, a sequence number is generated by Visa Installments. When used in the response for plan acceptances associated with a partial transactions, this field is populated. This field will be always populated by Visa Installments when clearing data is available. <b>When used in the request body for Visa Installment APIs it is highly recommended for the Visa partners to pass this in, if available. Otherwise, it will be generated by Visa Installments.</b> <br>*Example:* `"2"`<br>**Deprecated** | No |
| acquirerReferenceNumber | string | Acquirer Reference Number (ARN) is a 23-digit identification number associated with every draft and voucher. It consists of a Format Code, BASE Identification Number (BIN), Capture Date, Film Locator, and Check Digit. The ARN must be unique for each clearing. <br>*Example:* `"15524351474316171567231"` | No |

#### TransactionAmount Schema

<b>  Conditional Mandatory Field  </b>:
<br>
The amount used in the Visa ISO transaction authorization and is represented as numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)).

When requested in API request from Merchant (<b>During Purchase scenario</b>):
+ In multi-currency scenario, this field should be populated in source currency.

When returned in API response or callback notification (<b>During Purchase scenario</b>):
+ When returned to Merchant in multi-currency scenario, this field will be populated in source currency.
+ When returned to Issuer in multi-currency scenario, this field will be populated in Issuer's currency.

When requested in API request from Issuer (<b>Post Purchase scenario</b>):
+ This field need not be provided and will internally be set as the sum of clearing amounts (<code>installmentTransactions.clearingAmount</code>).

When returned in API response or callback notification to Issuer (<b>Post Purchase scenario</b>):
+ In multi-currency scenario, this field will be populated in Issuer's currency.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionAmount | long | <b>  Conditional Mandatory Field  </b>: <br> The amount used in the Visa ISO transaction authorization and is represented as numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)).  When requested in API request from Merchant (<b>During Purchase scenario</b>): + In multi-currency scenario, this field should be populated in source currency.  When returned in API response or callback notification (<b>During Purchase scenario</b>): + When returned to Merchant in multi-currency scenario, this field will be populated in source currency. + When returned to Issuer in multi-currency scenario, this field will be populated in Issuer's currency.  When requested in API request from Issuer (<b>Post Purchase scenario</b>): + This field need not be provided and will internally be set as the sum of clearing amounts (<code>installmentTransactions.clearingAmount</code>).  When returned in API response or callback notification to Issuer (<b>Post Purchase scenario</b>): + In multi-currency scenario, this field will be populated in Issuer's currency.  |  |

#### CardHolderSearchResultItem Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| productType | string, <br>**Available values:** "CREDIT", "DEBIT" | Product Type of the PANs enrolled in this Batch.If the Product type is not provided in request the PANs enrolled will be considered as Credit by default.  | No |
| encAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  | Yes |
| enrollmentStatus | string, <br>**Available values:** "ENROLLED", "NOT_ENROLLED", "ERROR" | Defined the enrollment status for each enrollment record. "NOT_ENROLLED" means the card holder is currently not enrolled or enrollment will end within 24 hours of enrollmentEndDate. "ERROR" means the card holder was not enrolled due to an error.<br>*Enum:* `"ENROLLED"`, `"NOT_ENROLLED"`, `"ERROR"`<br>*Example:* `"ENROLLED"` | No |
| enrollmentEndDate | dateTime | Enrollment end date - Returned if provided during enrollment. | No |
| enrollmentStartDate | dateTime | Enrollment date of the latest Enrollment Event | No |
| enrollmentTimestamp | dateTime | Timestamp of cardholder enrollment.<br>*Example:* `"2021-01-17T16:15:21Z"` | Yes |
| vEnrollmentProfileID | string (uuid) | Visa-generated Enrollment Profile Identifier<br>*Example:* `"278a6873-9dc2-b466-284c-1d10ee797301"` | Yes |
| lastEnrollmentEndDate | dateTime | Enrollment end date of the latest UnEnrollment Event | No |
| extendedEligibilityEndDate | dateTime | Extended Eligibility end date - Returned if provided during enrollment. | No |

#### MerchantPostalCode Schema

Postal/Zip code of the merchant

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MerchantPostalCode | string | Postal/Zip code of the merchant |  |

**Example**
<pre>123456</pre>

#### PlanStartDate Schema

Effective Start date of the Plan.Plan start date as set by the Issuer.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanStartDate | date | Effective Start date of the Plan.Plan start date as set by the Issuer.  |  |

#### PartnerMerchantReferenceID Schema

Usually, this reference ID is assigned by the Partner but in cases where not provided
when onboarding the Merchant, this value will be generated by Visa and provided to the
Partner. 
It is used by Visa for enforcing authorization (so that one Merchant's plan acceptance is not accessed/modified by an unauthorized merchant/partner), risk assessment and for instrumentation. 
 It is also used to serve bilateral plan agreements between a Seller and Issuer. In the future, it can be used to specify merchant-specific filters for installment plans.

   - When provided in cancellation or search, this ID is used to match the plan acceptance and enforce authorization.
   - When provided in plan selection (plan acceptance creation) API, it is used to later for authorization checks on cancel or search plan acceptances.
   - When provided in plan match API, it is used for filter bilateral plans & instrumentation/reporting purposes.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PartnerMerchantReferenceID | string | Usually, this reference ID is assigned by the Partner but in cases where not provided when onboarding the Merchant, this value will be generated by Visa and provided to the Partner.  It is used by Visa for enforcing authorization (so that one Merchant's plan acceptance is not accessed/modified by an unauthorized merchant/partner), risk assessment and for instrumentation.   It is also used to serve bilateral plan agreements between a Seller and Issuer. In the future, it can be used to specify merchant-specific filters for installment plans.     - When provided in cancellation or search, this ID is used to match the plan acceptance and enforce authorization.    - When provided in plan selection (plan acceptance creation) API, it is used to later for authorization checks on cancel or search plan acceptances.    - When provided in plan match API, it is used for filter bilateral plans & instrumentation/reporting purposes.  |  |

**Example**
<pre>98243463</pre>

#### Locale Schema

Locale in in [IETF BCP 47 format](https://tools.ietf.org/html/bcp47)
The BCP 47 locale format is <Language Subtag>-<Extended Language Subtag (Optional)>-<Script Subtag (Optional)>-<Region Subtag (Optional)>-<Variant1 Subtag (Optional)>-<Variant2 Subtag (Optional)>
However, only following locale formats are supported by Installments API:
<Language Subtag>-<Region Subtag>
Language Subtag: [a-zA-Z]{2,8}
Region Subtag: [a-zA-Z]{2} | [0-9]{3}

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Locale | string | Locale in in [IETF BCP 47 format](https://tools.ietf.org/html/bcp47) The BCP 47 locale format is <Language Subtag>-<Extended Language Subtag (Optional)>-<Script Subtag (Optional)>-<Region Subtag (Optional)>-<Variant1 Subtag (Optional)>-<Variant2 Subtag (Optional)> However, only following locale formats are supported by Installments API: <Language Subtag>-<Region Subtag> Language Subtag: [a-zA-Z]{2,8} Region Subtag: [a-zA-Z]{2} | [0-9]{3}  |  |

**Example**
<pre>en-US</pre>

#### PlanAcceptanceTransactionSearchResultItem Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanAcceptanceTransactionSearchResultItem | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dormant"**: string, <br>**Available values:** "true", "false", <br>**Default:** false, **"cardBrand"**: string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA, **"vPlanIDRef"**: string, **"crossBorder"**: boolean, **"transactionAmount"**: long, **"vPlanAcceptanceID"**: string (uuid), **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime } ], **"transactionRefundAmount"**: long } |  |  |

#### RefundInstallmentTransaction-1 Schema

Refund/Cancel information for the Transaction based at clearing level.
When used in the response body, this object provides the results of partial or full cancellation.
When used in the request body, this object is to be used for specifying a refund details to be used for refund transaction.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RefundInstallmentTransaction-1 | { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"refundAmount"**: long, **"refundReason"**: string, **"itemShippedStatus"**: string, <br>**Available values:** "SHIPPED", "NOT_SHIPPED", <br>**Default:** SHIPPED, **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } | Refund/Cancel information for the Transaction based at clearing level. When used in the response body, this object provides the results of partial or full cancellation. When used in the request body, this object is to be used for specifying a refund details to be used for refund transaction.  |  |

#### FundedBy Schema

Party responsible for Installment Funding Fees

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| FundedBy | string, <br>**Available values:** "CONSUMER", "MERCHANT" | Party responsible for Installment Funding Fees |  |

**Example**
<pre>CONSUMER</pre>

#### TransactionCrossBorderIndicator Schema

Indicates whether Plan Acceptance for the Transaction is Cross-Border

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionCrossBorderIndicator | boolean | Indicates whether Plan Acceptance for the Transaction is Cross-Border |  |

**Example**
<pre>false</pre>

#### EligibilityStatus Schema

Defined the eligibility/match status. "ERROR" means eligiblity could not be determined.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EligibilityStatus | string, <br>**Available values:** "MATCHED", "NOT_MATCHED", "ERROR", <br>**Default:** MATCHED | Defined the eligibility/match status. "ERROR" means eligiblity could not be determined. |  |

**Example**
<pre>MATCHED</pre>

#### PlanFeesForLender Schema

Fee rate table used to calculate the fees.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| type | string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "ACQUIRER_TO_VISA", "ISSUER_TO_ACQUIRER", "ISSUER_TO_VISA", "ISSUER_TO_VISA_SCHEDULING_FEES" | Fee types applicable for lender.<br>*Enum:* `"ACQUIRER_TO_ISSUER"`, `"ACQUIRER_TO_VISA"`, `"ISSUER_TO_ACQUIRER"`, `"ISSUER_TO_VISA"`, `"ISSUER_TO_VISA_SCHEDULING_FEES"`<br>*Example:* `"ACQUIRER_TO_ISSUER"` | No |
| flatFee | long | Flat fee applied on the first Installment payment in Issuer currency. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example).  + The currency field decides the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). If the currency is USD, “1034” is used for representing the amount "$10.34". + Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `13400` | No |
| ratePercentage | integer | Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 250 specifies 2.5%</b> + For calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code> <br>*Example:* `320` | No |

#### LastInstallment-1 Schema

Cost details (fee and principal) for the last Installment.
Note that the last Installment includes the balance of the rounding amounts when amount is split across various Installment periods.
The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| LastInstallment-1 | { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long } | Cost details (fee and principal) for the last Installment. Note that the last Installment includes the balance of the rounding amounts when amount is split across various Installment periods. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

#### TransactionInformation Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInformation | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } |  |  |

#### MonthlyPlanFeeRatePercentage Schema

Monthly interest fee rate in percentage applied on Installment payment. This will only be set for fee type "CONSUMER".
+ Percentage rate and is a non-negative value.
+ The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 250 specifies 2.5%</b>
+ For calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code>

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MonthlyPlanFeeRatePercentage | integer | Monthly interest fee rate in percentage applied on Installment payment. This will only be set for fee type "CONSUMER". + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 250 specifies 2.5%</b> + For calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code>  |  |

**Example**
<pre>320</pre>

#### ConsumerInformation Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ConsumerInformation | { **"encAccountNumber"**: byte, **"tokenAccountNumber"**: string, **"vProvisionedTokenID"**: string, **"paymentAccountReference"**: string } & { **"tokenReferenceID"**: string } |  |  |

#### RefundAmountInSourceCurrency Schema

The amount (in source currency) used for partial or full cancellation of clearing.
This field will be always populated when clearing is in PARTIALLY_REFUNDED or fully CANCELLED state.
The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10".
Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.

When returned in API response or callback notification to Issuer (<b>During Purchase scenario</b>):
+ In multi-currency scenario, this field will be populated in source currency.

This field will not be returned to Issuer in <b>Post Purchase scenario</b>.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RefundAmountInSourceCurrency | long | The amount (in source currency) used for partial or full cancellation of clearing. This field will be always populated when clearing is in PARTIALLY_REFUNDED or fully CANCELLED state. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html)). If the currency is USD, “214010” is used for representing the amount, "$2,140.10". Note that there are no fractional minor units represented. They're rounded to the nearest whole number of minor units.  When returned in API response or callback notification to Issuer (<b>During Purchase scenario</b>): + In multi-currency scenario, this field will be populated in source currency.  This field will not be returned to Issuer in <b>Post Purchase scenario</b>.  |  |

#### ErrorResponse-1 Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"invalidRequest"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `400` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Input parameters validation failed"` | No |

#### PlanAcceptanceForLender-1 Schema

Plan acceptance created against an eligible plan after consumer accepts the plan terms and conditions.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| status | string, <br>**Available values:** "CREATED", "CANCELLED", "UPDATED", "CONFIRMED" | Specifies the status of the plan acceptance. + <code>CREATED</code>: The intial state, until <b>all</b> of the installment transactions are confirmed or cancelled or until transaction is associated to this plan acceptance. + <code>CANCELLED</code>: Plan acceptance is transitioned to this state when <b>all</b> of the installment transactions are cancelled + <code>CONFIRMED</code>: Plan acceptance is transitioned to this state when <b>all</b> of the installment transactions are confirmed + <code>UPDATED</code>: Plan acceptance is transitioned to this state from <code>CREATED</code> state when a transaction is associated to this plan acceptance <br>*Enum:* `"CREATED"`, `"CANCELLED"`, `"UPDATED"`, `"CONFIRMED"`<br>*Example:* `"CREATED"` | Yes |
| cardBrand | string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA | The card network brand. When no value is set (or the field is not returned), it should be treated as VISA.<br>*Enum:* `"VISA"`, `"NON_VISA"`, `"MASTERCARD"`, `"AMERICAN_EXPRESS"`, `"DISCOVER"`, `"JCB"`, `"UNIONPAY"`, `"DINERSCLUB"` | No |
| crossBorder | boolean | Indicates whether Plan Acceptance is Cross-Border<br>*Example:* `false` | No |
| transactions | [ { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"refundAmount"**: long, **"lastRefundDateTime"**: dateTime } ], **"transactionRefundAmount"**: long } ], <br>**Default:**  | A list of Visa ISO transactions associated with this Installment PlanAcceptance.  | Yes |
| installmentPlan | { **"name"**: string, **"type"**: string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID", **"vPlanID"**: string (uuid), **"fundedBy"**: [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ], **"vPlanIDRef"**: string, **"islamicPlan"**: boolean, **"promotionInfo"**: { **"promotionID"**: string, **"promotionCode"**: string }, **"termsAndConditions"**: [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ], **"installmentFrequency"**: string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY", **"numberOfInstallments"**: number (integer) } & { **"costInfo"**: { **"feeInfo"**: [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "ACQUIRER_TO_VISA", "ISSUER_TO_ACQUIRER", "ISSUER_TO_VISA", "ISSUER_TO_VISA_SCHEDULING_FEES", **"flatFee"**: long, **"ratePercentage"**: integer } ], **"currency"**: string, **"totalFees"**: long, **"totalPlanCost"**: long, **"lastInstallment"**: { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"firstInstallment"**: { **"upfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"totalUpfrontFees"**: long, **"totalRecurringFees"**: long, **"annualPercentageRate"**: integer } } | Installment Plan details relevant for issuer | Yes |
| encAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  | Yes |
| statusTransitions | { **"createdDateTime"**: string (date-time-ms-nooffset), **"updatedDateTime"**: string (date-time-ms-nooffset), **"confirmedDateTime"**: string (date-time-ms-nooffset), **"cancellationDateTime"**: string (date-time-ms-nooffset) } | The timestamps at which the Plan Acceptance status was updated. | Yes |
| vPlanAcceptanceID | string (uuid) | Visa-generated identifier for a plan acceptance<br>*Example:* `"31e9f2b5-d90d-089e-67a5-1f533b02d301"` | Yes |

#### Use_JWK Schema

The "use" (public key use) parameter identifies the intended use of the public key.
+ Required when the JWK is used to represent the device keys
+ Indirectly defined by the value of <code>keyFunction</code>
+ Employed to indicate whether the key is used for encrypting data or verifying the signature on data.
  + <code>enc</code> must be used when the key is used for <code>KEY_AGREEMENT</code>
  + <code>sig</code> must be used when the key is used for <code>AUTHENTICITY</code>

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Use_JWK | string, <br>**Available values:** "sig", "enc" | The "use" (public key use) parameter identifies the intended use of the public key. + Required when the JWK is used to represent the device keys + Indirectly defined by the value of <code>keyFunction</code> + Employed to indicate whether the key is used for encrypting data or verifying the signature on data.   + <code>enc</code> must be used when the key is used for <code>KEY_AGREEMENT</code>   + <code>sig</code> must be used when the key is used for <code>AUTHENTICITY</code>  |  |

**Example**
<pre>enc</pre>

#### MerchantCity Schema

Name of the merchant's city

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| MerchantCity | string | Name of the merchant's city |  |

**Example**
<pre>Foster City</pre>

#### EligibleTransaction-1 Schema

Invoked whenever there are transactions eligible for Installment plans of cardholders already registered through a POST_PURCHASE Installment mode.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| cardBrand | string, <br>**Available values:** "VISA", "NON_VISA", "MASTERCARD", "AMERICAN_EXPRESS", "DISCOVER", "JCB", "UNIONPAY", "DINERSCLUB", <br>**Default:** VISA | The card network brand. When no value is set (or the field is not returned), it should be treated as VISA.<br>*Enum:* `"VISA"`, `"NON_VISA"`, `"MASTERCARD"`, `"AMERICAN_EXPRESS"`, `"DISCOVER"`, `"JCB"`, `"UNIONPAY"`, `"DINERSCLUB"` | No |
| matchedPlans | [ string (uuid) ] | List of eligible and active Installment Plans | Yes |
| transactionInfo | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } |  | Yes |
| encAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  | Yes |
| eligibilityDateTime | dateTime | Time when this eligibility was determined by Visa Installments<br>*Example:* `"2021-01-17T16:15:21Z"` | Yes |
| eligibilityExpiryDateTime | dateTime | Time when this eligibility expires<br>*Example:* `"2021-01-17T16:15:21Z"` | Yes |

#### CardHolderNotEnrolledError Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"CardHolderNotEnrolled"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `404` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"CardHolder not found"` | No |

#### TokenID Schema

This is the token information corresponding to the PAN tokenized by the TokenRequester. The token requester is usually the seller.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TokenID | string | This is the token information corresponding to the PAN tokenized by the TokenRequester. The token requester is usually the seller. |  |

**Example**
<pre>ac9e1cf6693c32cb7921112b7eb07d01</pre>

#### OnboardingOBORelationship Schema

On-Behalf-Of Relationship Information for Client/Merchant Onboarding

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| relationshipType | string, <br>**Available values:** "OBO_FUNDING_FEE_COLLECTOR", "OBO_SERVICE_FEE_COLLECTOR" | Type of operation performed by the third-party partner on-behalf-of the client/merchant being onboarded <br>*Enum:* `"OBO_FUNDING_FEE_COLLECTOR"`, `"OBO_SERVICE_FEE_COLLECTOR"`<br>*Example:* `"OBO_FUNDING_FEE_COLLECTOR"` | Yes |
| partnerReferenceID | string | Reference ID to identify the third-party partner <br>*Example:* `"81339002"` | Yes |
| onBehalfOfReferenceID | string | Reference ID used by the third-party partner to identify the client/merchant being onboarded <br>*Example:* `"09124980"` | Yes |

#### PlanTermsAndConditionsForSearchPlan Schema

Terms and Conditions that need to be accepted by consumer before the plan acceptance can be created using the Installment plan corresponding to this terms and conditions.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| url | string | A Terms and Conditions HTTPS URL hosted by the Issuer for displaying to the cardholder for acceptance when initiating a plan acceptance for this plan. This HTTPS URL must not invoke an executable script and must point to an HTML page containing terms and conditions text in a displayable manner. When provided during onboarding, the URL is checked for validity. <br>*Example:* `"https://examplebank.com/tc"` | No |
| text | string | This is the text of the Terms and Conditions for Installment Plan.<br>*Example:* `"These terms of use constitute an agreement between you and X Pay Pvt Ltd ABN 123456 trading as X Pay(we, our, or us) (and any person who acquires your Payment Plan from us).\nOur Buy Now Pay Later option allows you to purchase goods or services over a period of time by repaying us in equal instalments (Payment Plan).\nBy entering into a Payment Plan, you agree to be bound by these Terms of Use.\nYou should also read our Privacy Policy which forms a part of this agreement.\n"` | Yes |
| version | integer | Version of the Terms & Conditions accepted by the consumer. The version is auto-incremented every time an update is made to the Plan by the issuer in the Visa Developer Center/Portal UI. This is same as <code>Plan.termsAndConditions[i].version</code> sent to the Seller in the response of the matched plans API. <br>*Example:* `2` | Yes |
| longText | string | This is the long text of the Terms and Conditions for Installment Plan.<br>*Example:* `"These terms of use constitute an agreement between you and X Pay Pvt Ltd ABN 123456 trading as X Pay(we, our, or us) (and any person who acquires your Payment Plan from us).\nOur Buy Now Pay Later option allows you to purchase goods or services over a period of time by repaying us in equal instalments (Payment Plan).\nBy entering into a Payment Plan, you agree to be bound by these Terms of Use.\nYou should also read our Privacy Policy which forms a part of this agreement.\n"` | No |
| languageCode | string | Language code for the terms and conditions text for installment plans. The format is defined by [<b>ISO 639-2</b>](https://www.loc.gov/standards/iso639-2/php/code_list.php) <br>*Example:* `"eng"` | No |

#### PayloadTooLargeError Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"PayloadTooLarge"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `413` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Payload Too Large"` | No |

#### InstallmentTransactionIdentifier Schema

Installment Plan schedule is identified by this ID.
Visa-generated identifier for a clearing associated with this plan acceptance. This is useful if there are more than one clearing associated with a plan acceptance as ISO Transaction
is not sufficient to identify a plan acceptance, as there can be more than one plan acceptances associated with a single ISO transaction.
There can be more than one vInstallmentTransactionID per plan acceptance in the case of multiple clearings and partial ISO transaction associated with a plan acceptance.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransactionIdentifier | string (uuid) | Installment Plan schedule is identified by this ID. Visa-generated identifier for a clearing associated with this plan acceptance. This is useful if there are more than one clearing associated with a plan acceptance as ISO Transaction is not sufficient to identify a plan acceptance, as there can be more than one plan acceptances associated with a single ISO transaction. There can be more than one vInstallmentTransactionID per plan acceptance in the case of multiple clearings and partial ISO transaction associated with a plan acceptance.  |  |

**Example**
<pre>8eb01a5e-1f7c-15c7-414c-13189004c101</pre>

#### InstallmentTransaction Schema

Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or
many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example).
Represents the schedule of payments corresponding to a plan acceptance.
Clearing data will be always included when available.
<BR/><b>NOTES:</b>
+ When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body).
+ When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransaction | { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } | Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example). Represents the schedule of payments corresponding to a plan acceptance. Clearing data will be always included when available. <BR/><b>NOTES:</b> + When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body). + When used in the HTTP request body of an API request to Visa Installments, the required fields must be provided.  |  |

#### Kid_JWK Schema

Key identifier for situations in which the Client Software already possesses a key known and registered at Visa.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Kid_JWK | string | Key identifier for situations in which the Client Software already possesses a key known and registered at Visa.  |  |

**Example**
<pre>eaa6db43</pre>

#### AcquirerReferenceNumber Schema

Acquirer Reference Number (ARN) is a 23-digit identification number associated with every draft and voucher.
It consists of a Format Code, BASE Identification Number (BIN), Capture Date, Film Locator, and Check Digit.
The ARN must be unique for each clearing.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AcquirerReferenceNumber | string | Acquirer Reference Number (ARN) is a 23-digit identification number associated with every draft and voucher. It consists of a Format Code, BASE Identification Number (BIN), Capture Date, Film Locator, and Check Digit. The ARN must be unique for each clearing.  |  |

**Example**
<pre>15524351474316171567231</pre>

#### AuthorizationIdentificationResponseCode Schema

ISO transaction Auth Code (alphanumeric).
This Field 38 in ISO 8583 contains the response identification assigned by the authorizing institution.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AuthorizationIdentificationResponseCode | string | ISO transaction Auth Code (alphanumeric). This Field 38 in ISO 8583 contains the response identification assigned by the authorizing institution.  |  |

**Example**
<pre>05754C</pre>

#### AnnualPercentageRate-1 Schema

Annual Percentage Rate (APR) as configured by the Issuer during plan creation. This is not used for calculations, but used only for display purposes.
+ Interest fee rate in percentage applied on Installment payment.
+ Percentage rate and is a non-negative value.
+ The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 320 specifies 3.2%
+ For your calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code>

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| AnnualPercentageRate-1 | integer | Annual Percentage Rate (APR) as configured by the Issuer during plan creation. This is not used for calculations, but used only for display purposes. + Interest fee rate in percentage applied on Installment payment. + Percentage rate and is a non-negative value. + The percentage value is represented with two implicit decimals. (max 10000) <b>Example: 320 specifies 3.2% + For your calculations, the actual percentage value should be interpreted as follows: <code>actualPercentageValue = ratePercentage / 100.00</code>  |  |

**Example**
<pre>320</pre>

#### TotalUpfrontFees Schema

Total upfront fees charged to the consumer for this Installment plan. This fee corresponds to the fee type <code>CONSUMER_UPFRONT</code>.
This is the amount charged upfront along with the <b>first Installment principal</b> only.
The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TotalUpfrontFees | long | Total upfront fees charged to the consumer for this Installment plan. This fee corresponds to the fee type <code>CONSUMER_UPFRONT</code>. This is the amount charged upfront along with the <b>first Installment principal</b> only. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

**Example**
<pre>10000</pre>

#### TokenAccountNumber Schema

EMVCo Token account number provisioned by Visa

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TokenAccountNumber | string | EMVCo Token account number provisioned by Visa |  |

**Example**
<pre>4024007133554278</pre>

#### PlanPreferences Schema

To specify the Plan Preferences of Sellers & Seller Enablers(OBO- when invoked on behalf of Merchants).

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| vPlanID | string (uuid) | Visa-generated identifier for an Installment plan<br>*Example:* `"9d16a09e-3812-4ce3-a258-9981cc13a1f3"` | Yes |
| bilateralPlanAction | string, <br>**Available values:** "OPT_IN", "OPT_OUT" | Specifies the action taken by the Merchant on a Bilateral Installment Plan. - "OPT_IN"  - Indicates Merchant agrees to associate them to the Plan. - "OPT_OUT"  - Indicates Merchant disagrees and Decline to associate them to the Plan. <br>*Enum:* `"OPT_IN"`, `"OPT_OUT"`<br>*Example:* `"OPT_IN"` | Yes |

#### PlanForLender Schema

Installment Plan details relevant for issuer

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanForLender | { **"name"**: string, **"type"**: string, <br>**Available values:** "MARKET", "BI_LATERAL", "ISSUER_DEFAULT", "ISSUER_PROMOTION", "ISSUER_HYBRID", **"vPlanID"**: string (uuid), **"fundedBy"**: [ string, <br>**Available values:** "CONSUMER", "MERCHANT" ], **"vPlanIDRef"**: string, **"islamicPlan"**: boolean, **"promotionInfo"**: { **"promotionID"**: string, **"promotionCode"**: string }, **"termsAndConditions"**: [ { **"url"**: string, **"text"**: string, **"version"**: integer, **"languageCode"**: string } ], **"installmentFrequency"**: string, <br>**Available values:** "WEEKLY", "BIWEEKLY", "MONTHLY", "BIMONTHLY", **"numberOfInstallments"**: number (integer) } & { **"costInfo"**: { **"feeInfo"**: [ { **"type"**: string, <br>**Available values:** "ACQUIRER_TO_ISSUER", "ACQUIRER_TO_VISA", "ISSUER_TO_ACQUIRER", "ISSUER_TO_VISA", "ISSUER_TO_VISA_SCHEDULING_FEES", **"flatFee"**: long, **"ratePercentage"**: integer } ], **"currency"**: string, **"totalFees"**: long, **"totalPlanCost"**: long, **"lastInstallment"**: { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"firstInstallment"**: { **"upfrontFee"**: long, **"totalAmountExcludingUpfrontFee"**: long } & { **"amount"**: long, **"totalAmount"**: long, **"installmentFee"**: long }, **"totalUpfrontFees"**: long, **"totalRecurringFees"**: long, **"annualPercentageRate"**: integer } } | Installment Plan details relevant for issuer |  |

#### PlanTermsAndConditions Schema

Terms and Conditions that need to be accepted by consumer before the plan acceptance can be created using the Installment plan corresponding to this terms and conditions.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| url | string | A Terms and Conditions HTTPS URL hosted by the Issuer for displaying to the cardholder for acceptance when initiating a plan acceptance for this plan. This HTTPS URL must not invoke an executable script and must point to an HTML page containing terms and conditions text in a displayable manner. When provided during onboarding, the URL is checked for validity. <br>*Example:* `"https://examplebank.com/tc"` | No |
| text | string | This is the text of the Terms and Conditions for Installment Plan.<br>*Example:* `"These terms of use constitute an agreement between you and X Pay Pvt Ltd ABN 123456 trading as X Pay(we, our, or us) (and any person who acquires your Payment Plan from us).\nOur Buy Now Pay Later option allows you to purchase goods or services over a period of time by repaying us in equal instalments (Payment Plan).\nBy entering into a Payment Plan, you agree to be bound by these Terms of Use.\nYou should also read our Privacy Policy which forms a part of this agreement.\n"` | Yes |
| version | integer | Version of the Terms & Conditions accepted by the consumer. The version is auto-incremented every time an update is made to the Plan by the issuer in the Visa Developer Center/Portal UI. This is same as <code>Plan.termsAndConditions[i].version</code> sent to the Seller in the response of the matched plans API. <br>*Example:* `2` | Yes |
| languageCode | string | Language code for the terms and conditions text for installment plans. The format is defined by [<b>ISO 639-2</b>](https://www.loc.gov/standards/iso639-2/php/code_list.php) <br>*Example:* `"eng"` | No |

#### VISIndicatorCapability Schema

Merchant Acquirer's VIS flag handling capability.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| VISIndicatorCapability | string, <br>**Available values:** "SUPPORTED", "NOT_SUPPORTED" | Merchant Acquirer's VIS flag handling capability. |  |

**Example**
<pre>SUPPORTED</pre>

#### TransactionInfoWithPartialRefund-1 Schema

Transaction information that includes the associated transaction and cancellation/refund details.
When used in the response body, this field is provided when the refund/cancellation information is available.
When used in the request body, this field is to be used for specifying a refund details(refund amount,reason,shipped status) to be used for refund .

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInfoWithPartialRefund-1 | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"splitTransactionRefunds"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"refundAmount"**: long, **"refundReason"**: string, **"itemShippedStatus"**: string, <br>**Available values:** "SHIPPED", "NOT_SHIPPED", <br>**Default:** SHIPPED, **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } ], **"transactionRefundAmount"**: long } | Transaction information that includes the associated transaction and cancellation/refund details. When used in the response body, this field is provided when the refund/cancellation information is available. When used in the request body, this field is to be used for specifying a refund details(refund amount,reason,shipped status) to be used for refund .  |  |

#### Kty_JWK Schema

+ The "kty" (key type) parameter identifies the cryptographic algorithm family used with the key, such as "RSA" or "EC".
+ <code>EC</code> is the only supported value, for now. Future versions may provide others.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Kty_JWK | string, <br>**Available values:** "EC" | + The "kty" (key type) parameter identifies the cryptographic algorithm family used with the key, such as "RSA" or "EC". + <code>EC</code> is the only supported value, for now. Future versions may provide others.  |  |

**Example**
<pre>EC</pre>

#### CardType Schema

The card network Type. When no value is provided, it is defaulted to CREDIT.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CardType | string, <br>**Available values:** "CREDIT", "DEBIT", "PREPAID", <br>**Default:** CREDIT | The card network Type. When no value is provided, it is defaulted to CREDIT. |  |

#### EncryptedAccountNumber-1 Schema

JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber.
The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. 
It is a standard JWT with a single custom AccountNumber claim, u201CaccountNumberu201D that contains the card number/PAN.

Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EncryptedAccountNumber-1 | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding.  It is a standard JWT with a single custom AccountNumber claim, u201CaccountNumberu201D that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  |  |

**Example**
<pre>ZXlKaGJHY2lPaUpCTWpVMlIwTk5TMWNpTENKcGRpSTZJbnA2TTFGU1VXdFRka2hoVFMxTFRrc2lMQ0owWVdjaU9pSlpkVVpIU2tGbWVqWXdURWhTYnpsWlRGSnRZMFozSWl3aVpXNWpJam9pUVRJMU5rZERUU0lzSW5SNWNDSTZJa3BQVTBVaUxDSnJhV1FpT2lJNVRqSXlTRUV6TlVwRVdsZFNXRXBIUTFWTU9ERXpOVlV5Wm1GR2FXeEZSbmhVYUdOeWJGb3dNbkJSWjJ4VFRreEpJaXdpWTJoaGJtNWxiRk5sWTNWeWFYUjVRMjl1ZEdWNGRDSTZJbE5JUVZKRlJGOVRSVU5TUlZRaUxDSnBZWFFpT2lJeE5UZzNOelUyT0RFM0luMC5sMjg2UV9UMExTYnZwd3ZpUkpvcVhDVHR2NlNTSVhPblRWdlViS2hvQmFRLmxMUUFJcE5UdUxjOGRxLWoubWFLUXVEclpVbmVhZzR5Mm80aGN5Zy5tcW5nTl9QZUJybFFsMnpwUERHdnd3</pre>

#### EnrollmentEndDate Schema

Effective end date for cardholder enrollment. *This must be later than (midnight() UTC + 24 hours), otherwise a 400 error will be returned*
After this date, the enrollment is deleted, even if extendedEligibilityEndDate is set for a later date.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EnrollmentEndDate | dateTime | Effective end date for cardholder enrollment. *This must be later than (midnight() UTC + 24 hours), otherwise a 400 error will be returned* After this date, the enrollment is deleted, even if extendedEligibilityEndDate is set for a later date.  |  |

**Example**
<pre>2019-10-17T16:15:21Z</pre>

#### PlanForLenderOrSeller Schema

Installment plan with cost and fee structure

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanForLenderOrSeller |  | Installment plan with cost and fee structure |  |

#### NotAcceptableContentErrorResponse Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"NotAcceptable"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `406` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Not Acceptable content-type"` | No |

#### BatchExpirationDateTime Schema

This is the expiration date of the batch data. The batchID after this date is not relevant any more. The request will have to be re-initiated after this expiration date.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| BatchExpirationDateTime | dateTime | This is the expiration date of the batch data. The batchID after this date is not relevant any more. The request will have to be re-initiated after this expiration date. |  |

**Example**
<pre>2021-01-17T16:15:21Z</pre>

#### EnrollmentBatchPageContentArrayItem Schema

Cardholder item used in enrollment batch array pagination results.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| productType | string, <br>**Available values:** "CREDIT", "DEBIT" | Product Type of the PAN.<br>*Enum:* `"CREDIT"`, `"DEBIT"`<br>*Example:* `"DEBIT"` | No |
| errorResponse | { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } | Standard Error Response Body - Provided only when this enrollment has errors with enrollmentStatus as 'ERROR'. | No |
| encAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  | No |
| enrollmentStatus | string, <br>**Available values:** "ENROLLED", "NOT_ENROLLED", "ERROR" | Defined the enrollment status for each enrollment record. "NOT_ENROLLED" means the card holder is currently not enrolled or enrollment will end within 24 hours of enrollmentEndDate. "ERROR" means the card holder was not enrolled due to an error.<br>*Enum:* `"ENROLLED"`, `"NOT_ENROLLED"`, `"ERROR"`<br>*Example:* `"ENROLLED"` | No |
| enrollmentEndDate | dateTime | Enrollment end date - Returned if it was provided in the input. | No |
| enrollmentStartDate | dateTime | Enrollment date of the latest Enrollment Event | No |
| enrollmentTimestamp | dateTime | Timestamp of cardholder enrollment.<br>*Example:* `"2021-01-17T16:15:21Z"` | No |
| vEnrollmentProfileID | string (uuid) | Enrollment Profile Identifier for the cardholder enrollment. + Required in case of cardholder enrollment create/update (success or failure)  | No |
| lastEnrollmentEndDate | dateTime | Enrollment end date of the latest UnEnrollment Event | No |
| extendedEligibilityEndDate | dateTime | Extended Eligibility end date - Returned if it was provided in the input. | No |

#### VisaTransactionIdentifier Schema

ISO Visa Authorization Transaction ID.
+ A unique value that Visa assigns to each transaction and returns to the acquirer in the authorization response.
+ Visa uses this value to maintain an audit trail throughout the life cycle of the transaction and all related transactions, such as reversals, adjustments, confirmations, and chargebacks.
+ In case of <b>Post Purchase scenario</b>, if Visa Transaction ID differs between authorization and clearing, this value should refer to clearing Visa Transaction ID.
<br><b>Note:</b><br> In transactions using Mastercard credentials, where a single transaction ID is not available, Participants should use the Mastercard <code>Tran ID</code> field. <code>Tran ID</code> is made up of <code>Financial Network Code + Banknet Reference Number + MMDD(TransactionDate)</code>, concatenated with no spaces.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| VisaTransactionIdentifier | string | ISO Visa Authorization Transaction ID. + A unique value that Visa assigns to each transaction and returns to the acquirer in the authorization response. + Visa uses this value to maintain an audit trail throughout the life cycle of the transaction and all related transactions, such as reversals, adjustments, confirmations, and chargebacks. + In case of <b>Post Purchase scenario</b>, if Visa Transaction ID differs between authorization and clearing, this value should refer to clearing Visa Transaction ID. <br><b>Note:</b><br> In transactions using Mastercard credentials, where a single transaction ID is not available, Participants should use the Mastercard <code>Tran ID</code> field. <code>Tran ID</code> is made up of <code>Financial Network Code + Banknet Reference Number + MMDD(TransactionDate)</code>, concatenated with no spaces.  |  |

**Example**
<pre>460162701383910</pre>

#### InstallmentTransactionForNotification Schema

Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or
many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example).
Represents the schedule of payments corresponding to a plan acceptance.
Clearing data will be always included when available.
<BR/><b>NOTES:</b>
+ When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body).
+ When used in the HTTP request body for Visa Installment APIs, only <code>clearingAmount</code> and <code>clearingDateTime</code> are required to be passed-in.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| InstallmentTransactionForNotification | { **"status"**: string, <br>**Available values:** "PENDING_CONFIRMATION", "CONFIRMED", "PENDING_CANCELLATION", "CANCELLED", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } & { **"refundAmount"**: long, **"sourceCurrency"**: string, **"lastRefundDateTime"**: dateTime, **"refundAmountInSourceCurrency"**: long, **"clearingAmountInSourceCurrency"**: long } | Associated transaction for a given plan acceptance. A plan acceptance can be created with a single ISO transaction or many ISO transactions, or a part of an ISO transaction (one clearing out of many, for example). Represents the schedule of payments corresponding to a plan acceptance. Clearing data will be always included when available. <BR/><b>NOTES:</b> + When returned in the HTTP response body or callback notifications, all of the fields below are required (i.e., al fields are populated when used in response body). + When used in the HTTP request body for Visa Installment APIs, only <code>clearingAmount</code> and <code>clearingDateTime</code> are required to be passed-in.  |  |

#### TotalFees Schema

Total fees charged to the consumer, calculated as <code>totalUpfrontFees + totalRecurringFees</code>.
The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00".
Note that there are no fractional minor units represented. They're rounded to the whole minor units.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TotalFees | long | Total fees charged to the consumer, calculated as <code>totalUpfrontFees + totalRecurringFees</code>. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units.  |  |

**Example**
<pre>50000</pre>

#### TransactionInfoWithInstallmentTransaction Schema

Transaction information that includes the associated transaction and multiple clearing info.
When used in the response body, this field is provided when the clearing information is available.
When used in the request body, this field is to be used for specifying a clearing amount to be used for plan acceptance creation. This is most likely in a post-purchase use case.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TransactionInfoWithInstallmentTransaction | { **"authCode"**: string, **"currency"**: string, **"vTransactionID"**: string, **"externalTransactionRef"**: string } & { **"dateTime"**: dateTime, **"transactionAmount"**: long } & { **"installmentTransactions"**: [ { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } ] } | Transaction information that includes the associated transaction and multiple clearing info. When used in the response body, this field is provided when the clearing information is available. When used in the request body, this field is to be used for specifying a clearing amount to be used for plan acceptance creation. This is most likely in a post-purchase use case.  |  |

#### PlanAcceptanceCrossBorderIndicator Schema

Indicates whether Plan Acceptance is Cross-Border

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PlanAcceptanceCrossBorderIndicator | boolean | Indicates whether Plan Acceptance is Cross-Border |  |

**Example**
<pre>false</pre>

#### TotalPlanCost-1 Schema

Grand total of the entire plan cost including fees and the principal amounts across all Installment periods.
It is calculated as <code>totalFees + (numberOfInstallments * installmentAmount)</code>
The amount is represented in minor units. It is a numerical value in [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency (Cents for USD, for example). If the currency is USD, “61299” is used for representing the amount "$612.99".
Note that there are no fractional minor units represented, they're rounded to the whole minor units.<br />
For <b>Canada</b>, total plan cost calculation includes small buffer value to ensure Merchant displays the highest possible value for the transaction at the time of checkout (Issuers are not expected to use the value).

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| TotalPlanCost-1 | long | Grand total of the entire plan cost including fees and the principal amounts across all Installment periods. It is calculated as <code>totalFees + (numberOfInstallments * installmentAmount)</code> The amount is represented in minor units. It is a numerical value in [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency (Cents for USD, for example). If the currency is USD, “61299” is used for representing the amount "$612.99". Note that there are no fractional minor units represented, they're rounded to the whole minor units.<br /> For <b>Canada</b>, total plan cost calculation includes small buffer value to ensure Merchant displays the highest possible value for the transaction at the time of checkout (Issuers are not expected to use the value).  |  |

**Example**
<pre>612990</pre>

#### APINoLongerSupportedErrorResponse Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"Gone"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `410` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"API no longer supported"` | No |

#### InstallmentCostDetails-1 Schema

Cost details (fee and principal) for each Installment.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| amount | long | The principal amount for this Installment calculated as <code>total_purchase_amount / number_of_installments</code> The currency is specified in the parent object that includes this structure. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `50000` | Yes |
| totalAmount | long | The total amount payable for this Installment period, inclusive of principal amount, consumer fee and any upfront fee. The currency is specified in the parent object that includes this structure. The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `55000` | Yes |
| installmentFee | long | The consumer fee for every installment period, including the first one. This fee corresponds to the feeType - <code>CONSUMER</code> The amount is represented in minor units. It is a numerical value in the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html) of the currency, such as Cents for USD. If the currency is USD, “13400” is used for representing the amount, "$134.00". Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `5000` | Yes |

#### RefundInstallmentTransaction Schema

Refund/Cancel information for the Transaction based at clearing level.
When used in the response body, this object provides the results of partial or full cancellation.
When used in the request body, this object is to be used for specifying a refund details to be used for refund transaction.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| RefundInstallmentTransaction | { **"status"**: string, <br>**Available values:** "CONFIRMED", "CANCELLED", "PENDING_CONFIRMATION", "PENDING_CANCELLATION", "PARTIALLY_REFUNDED", **"refundAmount"**: long, **"refundReason"**: string, **"itemShippedStatus"**: string, <br>**Available values:** "SHIPPED", "NOT_SHIPPED", <br>**Default:** SHIPPED, **"vInstallmentTransactionID"**: string (uuid) } & { **"clearingAmount"**: long, **"clearingDateTime"**: dateTime, **"settlementCurrency"**: string, **"clearingSequenceNumber"**: string, **"acquirerReferenceNumber"**: string } | Refund/Cancel information for the Transaction based at clearing level. When used in the response body, this object provides the results of partial or full cancellation. When used in the request body, this object is to be used for specifying a refund details to be used for refund transaction.  |  |

#### TransactionAmountRange Schema

Min and Max transaction amount for a Plan

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| maximumTransactionAmount | long | Maximum Amount required for eligiblity. The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example).  + The currency field decides the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). If the currency is USD, “1034” is used for representing the amount "$10.34". + Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `500000` | Yes |
| minimumTransactionAmount | long | Minimum Amount required for eligiblity The amount is represented in minor units. It is a numerical value in the minor units of the currency (Cents for USD, for example).  + The currency field decides the [<b>minor units</b>](https://www.currency-iso.org/en/home/tables/table-a1.html). If the currency is USD, “1034” is used for representing the amount "$10.34". + Note that there are no fractional minor units represented. They're rounded to the whole minor units. <br>*Example:* `5000` | Yes |

#### BaseTransactionInformation-1 Schema

This structure represents the fields required for identifying a Visa transaction.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| authCode | string | ISO transaction auth code (alphanumeric)<br>*Example:* `"05754C"` | No |
| currency | string | <b>  Conditional Mandatory Field  </b>: Always required when <code>transactionAmount</code> is specified Currency of the transaction amount. Currency code in [ISO 4217 format](https://www.iban.com/currency-codes)  | No |
| vTransactionID | string | ISO Visa Authorization Transaction ID. + A unique value that Visa assigns to each transaction and returns to the acquirer in the authorization response. + Visa uses this value to maintain an audit trail throughout the life cycle of the transaction and all related transactions, such as reversals, adjustments, confirmations, and chargebacks. + In case of <b>Post Purchase scenario</b>, if Visa Transaction ID differs between authorization and clearing, this value should refer to clearing Visa Transaction ID. <br><b>Note:</b><br> In transactions using Mastercard credentials, where a single transaction ID is not available, Participants should use the Mastercard <code>Tran ID</code> field. <code>Tran ID</code> is made up of <code>Financial Network Code + Banknet Reference Number + MMDD(TransactionDate)</code>, concatenated with no spaces. <br>*Example:* `"460162701383910"` | No |
| externalTransactionRef | string | This is used by external clients as an opaque identifier and is sometimes used to correlate multiple transaction.<br>*Example:* `"17013357808877803992"` | No |
