openapi: 3.0.1
info:
title: Visa Account Updater
description: ''
version: '1'
servers:
- url: https://sandbox.api.visa.com
description: Sandbox server
security: []
tags:
- name: Issuer Stop Advice API
description: >-
Issuers can place stop advices in VAU to block specific merchants from
receiving an automatic VAU credential update (e.g., following reported
fraud) while still allowing their cardholder to transact with the merchant
where appropriately authorized.
- name: Visa Account Updater Acquirer API
description: Visa Account Updater Acquirer API
- name: Visa Account Updater Merchant API
description: Visa Account Updater Merchant API for merchant enrollment and search.
paths:
/vau/issuer-api/v1/stopadvices:
post:
tags:
- Issuer Stop Advice API
summary: Issuer Stop Advice API
description: >-
Issuer can place stop advice by providing following requested
information
operationId: stopAdviceUsingPOST
parameters:
- name: Accept
in: header
required: false
explode: false
schema:
type: string
enum:
- application/json
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/stopAdviceRequest'
required: true
responses:
'200':
description: >-
This response code will be returned in scenarios where the stop
advice is successful, all possible response codes are explained
below in the model.
content:
application/json:
schema:
$ref: '#/components/schemas/StopAdviceResponse'
'400':
description: >-
This response code will be returned in scenarios where the stop
advice is badly formatted.
content:
application/json:
schema:
$ref: '#/components/schemas/BadFormattedErrorMessage'
'409':
description: >-
This response code will be returned in scenarios where the stop
advice is rejected, all possible reasons for request rejection are
explained below in the model.
content:
application/json:
schema:
$ref: '#/components/schemas/RejectedStopAdviceRequestResponse'
'500':
description: >-
This response code will be returned in scenarios where the stop
advice could not be sucessfully processed.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorMessage'
x-operationVersions:
- label: v1 - Latest
operationPointer: '#/paths/~1vau~1issuer-api~1v1~1stopadvices/post'
default: false
x-hideTryIt: true
/vau/onboard-api/acquirer/v1/merchants/search:
post:
tags:
- Visa Account Updater Merchant API
summary: Merchant Search
description: Merchants can be searched by providing following requested information
operationId: merchantSearchUsingPOST
parameters:
- name: Accept
in: header
required: false
explode: false
schema:
type: string
enum:
- application/json
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/merchantSearchRequest'
required: true
responses:
'200':
description: >-
This response code will be returned in scenarios where the merchant
search is successful, all possible response codes are explained
below in the model.
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantSearchResponse'
'400':
description: >-
This response code will be returned in scenarios where the merchant
search is badly formatted.
content:
application/json:
schema:
$ref: '#/components/schemas/BadFormattedErrorMessage'
'409':
description: >-
This response code will be returned in scenarios where the merchant
search is rejected, all possible reasons for request rejection are
explained below in the model.
content:
application/json:
schema:
$ref: '#/components/schemas/RejectedMerchantSearchResponse'
'500':
description: >-
This response code will be returned in scenarios where the merchant
search could not be sucessfully processed.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorMessage'
x-operationVersions:
- label: v1 - Latest
operationPointer: '#/paths/~1vau~1onboard-api~1acquirer~1v1~1merchants~1search/post'
default: false
x-hideTryIt: true
/vau/onboard-api/acquirer/v1/merchants:
post:
tags:
- Visa Account Updater Merchant API
summary: Merchant Enrollment
description: Enroll new merchants by providing following requested information
operationId: merchantEnrolmentUsingPOST
parameters:
- name: Accept
in: header
required: false
explode: false
schema:
type: string
enum:
- application/json
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/merchantEnrolmentRequest'
required: true
responses:
'200':
description: >-
This response code will be returned in scenarios where the merchant
enrolment is successful, all possible response codes are explained
below in the model.
content:
application/json:
schema:
$ref: '#/components/schemas/MerchantEnrolmentResponse'
'400':
description: >-
This response code will be returned in scenarios where the merchant
enrolment is badly formatted.
content:
application/json:
schema:
$ref: '#/components/schemas/BadFormattedErrorMessage'
'409':
description: >-
This response code will be returned in scenarios where the merchant
enrolment is rejected, all possible reasons for request rejection
are explained below in the model.
content:
application/json:
schema:
$ref: '#/components/schemas/RejectedMerchantEnrollmentResponse'
'500':
description: >-
This response code will be returned in scenarios where the merchant
enrolment could not be sucessfully processed.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorMessage'
x-operationVersions:
- label: v1 - Latest
operationPointer: '#/paths/~1vau~1onboard-api~1acquirer~1v1~1merchants/post'
default: false
x-hideTryIt: true
/vau/acquirer-api/v1/inquiry:
post:
tags:
- Visa Account Updater Acquirer API
summary: Acquirer API for PANs Inquiry
description: Retrieve the new PANs information for requested old PANs.
operationId: inquiryUsingPOST
requestBody:
description: inquiryRequest
content:
application/json:
schema:
$ref: '#/components/schemas/Request'
examples:
Default1:
summary: Default1
value:
inquiries:
- cardholderAccountNumber: a4X3933787254355
expirationDate: '2609'
acquirerSegmentId: 2
merchantId: 00000067625P
acquirerOrMerchantProprietaryInfo: ''
subMerchantName: ''
Default:
summary: Default
value:
inquiries:
- cardholderAccountNumber: 4389613X6834X49X
expirationDate: '1802'
- cardholderAccountNumber: 4389A13X6834X49X
expirationDate: '1802'
acquirerSegmentId: 88
merchantId: '000000705858'
acquirerOrMerchantProprietaryInfo: ''
subMerchantName: SM01
required: true
responses:
'200':
description: >-
This response code will be returned in scenarios where the inquiry
is successful, all possible response codes are explained below in
the model.
content:
application/json:
schema:
$ref: '#/components/schemas/Response'
examples:
Default1:
summary: Default1
value:
rejects:
- cardholderAccountNumber: a4X3933787254355
rejectReason: >-
Account Number contains non-numeric characters or is
blank
rejectReasonCode: '3'
expirationDate: '2609'
acquirerSegmentId: 2
merchantId: 00000067625P
responses: []
acquirerOrMerchantProprietaryInfo: ''
subMerchantName: ''
Default:
summary: Default
value:
rejects:
- cardholderAccountNumber: 4389A13X6834X49X
rejectReason: >-
Account Number contains non-numeric characters or is
blank
rejectReasonCode: '3'
expirationDate: '1802'
acquirerSegmentId: 88
merchantId: '000000705858'
responses:
- previouslySentFlag: 'N'
newCardholderAccountNumber: ''
oldExpirationDate: '1802'
newExpirationDate: ''
oldCardholderAccountNumber: 4389613X6834X49X
serviceIdentifier: P
acquirerOrMerchantProprietaryInfo: ''
subMerchantName: SM01
'400':
description: >-
This response code will be returned in scenarios where the inquiry
is badly formatted.
content:
application/json:
schema:
$ref: '#/components/schemas/BadFormattedErrorMessage-1'
'409':
description: >-
This response code will be returned in scenarios where the inquiry
is rejected, all possible reasons for request rejection are
explained below in the model.
content:
application/json:
schema:
$ref: '#/components/schemas/RejectedRequestResponse'
'500':
description: >-
This response code will be returned in scenarios where the inquiry
could not be sucessfully processed.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericErrorMessage-1'
deprecated: false
x-codegen-request-body-name: inquiryRequest
x-operationVersions:
- label: v1 - Latest
operationPointer: '#/paths/~1vau~1acquirer-api~1v1~1inquiry/post'
default: false
x-hideTryIt: true
components:
schemas:
RejectedStopAdviceResponse:
required:
- cardAcceptorId
- cardholderAccountNumber
- merchantName
type: object
properties:
startDate:
type: string
description: >-
[This field contains the start date, which shouldn't be less than
the current date, and its format is yyyy-mm-dd, the default value is
the current date.]
format: date
rejectCode:
type: string
description: >
[This field contains one of the following reject codes:
* HAccount number does not start with 2, 3, 4, 5 or 6
* GAccount number contains non-numeric characters or is blank
* LAccount number is not of proper length (must be 13, 15, 16 or
19)
* MAccount number is not mod 10 compliant
* NNo stop advice applied, unable to find merchant information for
the requested card acceptor id
* RAccount number is not associated with requested segment id
* SStart date must not be less than the current date
* DDuplicate stop advice in the request
* IMandatory field cardholderAccountNumber is missing or blank in
the request
* JMandatory field cardAcceptorId is missing or blank in the
request
* KMandatory field merchantName is missing or blank in the request
* FStop advice is already placed for requested account number and
merchant]
example: G
merchantName:
type: string
description: '[This field must contain merchant name.]'
example: TestMerchant
rejectMessage:
type: string
description: >
[This field contains the description of reject message:
* HAccount number does not start with 2, 3, 4, 5 or 6
* GAccount number contains non-numeric characters or is blank
* LAccount number is not of proper length (must be 13, 15, 16 or
19)
* MAccount number is not mod 10 compliant
* NNo stop advice applied, unable to find merchant information for
the requested card acceptor id
* RAccount number is not associated with requested segment id
* SStart date must not be less than the current date
* DDuplicate stop advice in the request
* IMandatory field cardholderAccountNumber is missing or blank in
the request
* JMandatory field cardAcceptorId is missing or blank in the
request
* KMandatory field merchantName is missing or blank in the request
* FStop advice is already placed for requested account number and
merchant]
example: Account Number contains non-numeric characters or is blank
cardAcceptorId:
type: string
description: '[This field must contain card acceptor id.]'
example: '89389898'
cardholderAccountNumber:
type: string
description: >-
[This field must contain the account number (Visa, Mastercard,
American Express, or Discover).]
example: 400000XX00000000
description: '[RejectedStopAdviceResponse]'
RejectedMerchantEnrollmentResponse:
required:
- acquirerSegmentId
type: object
properties:
rejectCode:
type: string
description: >
[This field contains one of the following codes:
* AAcquirer segment is not enrolled
* VNo data found in inquiry field
* X-Acquirer status is in test mode, please contact client services
representative
* TMax merchants threshold passed for single request, current
threshold is:100.]
example: A
rejectReason:
type: string
description: >
[This field contains the description of the reject code:
* AAcquirer segment is not enrolled
* VNo data found in inquiry field
* X-Acquirer status is in test mode, please contact client services
representative
* TMax merchants threshold passed for single request, current
threshold is:100.]
example: Acquirer segment is not enrolled
acquirerSegmentId:
type: integer
description: '[This field must contain a valid VAU Acquirer Segment ID.]'
format: int32
example: 9992
description: '[Reject Request]'
GenericErrorMessage:
type: object
properties:
rejectReason:
type: string
description: |
This fields contains following reject reasons
* Internal Server Error, please try again after sometime
example: Internal Server Error, please try again after sometime
rejectReasonCode:
type: string
description: |
This Fields contains following Reject reason codes:
* E
example: E
description: '[Reject Request]'
RejectedInquiryResponse:
title: RejectedInquiryResponse
required:
- cardholderAccountNumber
type: object
properties:
rejectReason:
type: string
description: >
[This field contains the description of the reject code:
* 1Account Number does not start with 2, 3, 4, 5 or 6
* 3Account Number contains non-numeric characters or is blank
* 4Account Number is not of proper length (must be 13, 15, 16 or
19)
* 5Expiration Date is invalid (must be YYMM)]
example: Account Number does not start with 2, 3, 4, 5 or 6
expirationDate:
type: string
description: >-
[This field contains the old expiration date in YYMM format, where
YY = 00-99 and MM = 0112]
example: '2204'
rejectReasonCode:
type: string
description: >
[This field contains one of the following codes:
* 1Account Number does not start with 2, 3, 4, 5 or 6
* 3Account Number contains non-numeric characters or is blank
* 4Account Number is not of proper length (must be 13, 15, 16 or
19)
* 5Expiration Date is invalid (must be YYMM)]
example: '1'
cardholderAccountNumber:
type: string
description: >-
[This field contains the account number that was submitted in the
associated Acquirer Inquiry Request.]
example: 800000XX00000000
description: '[Rejected Inquiry Response body]'
GenericErrorMessage-1:
title: GenericErrorMessage
type: object
properties:
rejectReason:
type: string
description: |
This fields contains following reject reasons
* Internal Server Error, please try again after sometime
example: Internal Server Error, please try again after sometime
rejectReasonCode:
type: string
description: |
This Fields contains following Reject reason codes:
* E
example: E
description: '[Reject Request]'
MerchantId:
required:
- merchantId
type: object
properties:
merchantId:
type: string
description: >-
[Acquirer assigns the merchant ID. This field must contain a valid
VAU Merchant ID of 12 characters.]
example: '000000705853'
description: '[List of merchants to search]'
RejectMerchant:
required:
- rejectCode
- rejectMessage
type: object
properties:
rejectCode:
type: string
description: >
[This field contains one of the following reject codes:
* C-Mandatory field Card Acceptor Id missing or invalid or having
value zero
* D-Duplicate Merchant ID in Request
* F-Merchant name exceeds the maximum length of 75 characters
* G-Mandatory Field Merchant Country Code missing or must be 3 digit
ISO code(including leading zeros)
* H-Merchant Acquiring Identifier must be numeric of length 6 or 8
* I-Merchant ID must be 12 characters
* J-Merchant name having non english characters or '|' unsupported
character
* K-Max number of Merchant Acquiring Identifiers supported is 18
* L-Internet Address exceeds the maximum length of 100 characters
* M-Merchant Id already exists for this Acquirer Segment
* N-Mandatory Field Merchant Name missing
* O-Parent Company name having non english characters or '|'
unsupported character
* P-Mandatory Field Merchant Category Code missing or must be
numeric
* Q-Mandatory Field Merchant Acquiring Identifier(s) missing or
invalid
* R-Mandatory Field Merchant ID missing
* S-Merchant Country should be in same region as acquirer
* U-Card Acceptor Id exceeds the maximum length of 15 characters
* W-Merchant Category Code exceeds the maximum length of 4 digits
* Y-Merchant did not qualify for compliance check
* Z-Merchant Category Code is Ineligible for Merchant enrollment]
example: M
rejectMessage:
type: string
description: >
[This field contains the description of reject message:
* C-Mandatory field Card Acceptor Id missing or invalid or having
value zero
* D-Duplicate Merchant ID in Request
* F-Merchant name exceeds the maximum length of 75 characters
* G-Mandatory Field Merchant Country Code missing or must be 3 digit
ISO code(including leading zeros)
* H-Merchant Acquiring Identifier must be numeric of length 6 or 8
* I-Merchant ID must be 12 characters
* J-Merchant name having non english characters or '|' unsupported
character
* K-Max number of Merchant Acquiring Identifiers supported is 18
* L-Internet Address exceeds the maximum length of 100 characters
* M-Merchant Id already exists for this Acquirer Segment
* N-Mandatory Field Merchant Name missing
* O-Parent Company name having non english characters or '|'
unsupported character
* P-Mandatory Field Merchant Category Code missing or must be
numeric
* Q-Mandatory Field Merchant Acquiring Identifier(s) missing or
invalid
* R-Mandatory Field Merchant ID missing
* S-Merchant Country should be in same region as acquirer
* U-Card Acceptor Id exceeds the maximum length of 15 characters
* W-Merchant Category Code exceeds the maximum length of 4 digits
* Y-Merchant did not qualify for compliance check
* Z-Merchant Category Code is Ineligible for Merchant enrollment]
example: Merchant Id already exists for this Acquirer Segment
description: '[RejectMerchant]'
stopAdviceRequest:
required:
- issuerSegmentId
- stopadvices
type: object
properties:
stopadvices:
type: array
description: '[List of stop advice]'
items:
$ref: '#/components/schemas/stopAdvice'
issuerSegmentId:
type: integer
description: '[This field must contain a valid VAU issuer segment id]'
format: int32
example: 2
description: stopAdviceRequest
Merchant:
required:
- merchantId
- merchantStatus
type: object
properties:
city:
type: string
description: '[Merchant city name]'
example: Dallas
state:
type: string
description: '[Merchant state name]'
example: TX
merchantId:
type: string
description: >-
[Acquirer assigns the merchant ID. This field must contain a valid
VAU Merchant ID.]
example: '000000705853'
postalCode:
type: string
description: '[Merchant postal code]'
example: '75231'
contactName:
type: string
description: '[Merchant contact name]'
example: John
countryCode:
type: string
description: '[Merchant country code]'
example: '840'
contactEmail:
type: string
description: '[Merchant contact email]'
example: [email protected]
contactPhone:
type: string
description: '[Contact phone number of the merchant]'
example: '840909090'
merchantName:
type: string
description: '[Name of Merchant]'
example: GS PERFORMANCE
parentCompany:
type: string
description: '[Parent company name of the merchants]'
example: GS PERFORMANCE
cardAcceptorId:
type: string
description: '[Merchant card acceptor id]'
example: '8403435453'
merchantStatus:
type: string
description: >
[Merchant status, This field contains one of the following status:
* Active Merchant status is Active
* InActive Merchant status is In Active
* In-Progress Merchant enrollment is in progress
* NotFound Merchant not found in VAU
* Declined Merchant unable to pass screening
* Reject Merchant search is rejected, reject code and reject code
and reject message will be returned]
example: Success
streetAddress1:
type: string
description: '[Address1 for the merchant]'
example: 8144 Walnut Hill Lane
streetAddress2:
type: string
description: '[Address2 for the merchant]'
example: 4th cross
internetAddress:
type: string
description: '[Internet address for the merchant]'
example: https://www.glockstor.com
merchantDescriptor:
type: string
description: '[Merchant descriptor]'
example: GS PERFORMANCE
merchantCategoryCode:
type: string
description: >-
[A 4 digit code assigned by the merchants acquirer to identify the
merchants type of business.]
example: '5735'
merchantLineBusiness:
type: string
description: '[Merchant line business]'
example: Online Service
merchantAcquiringIdentifiers:
type: array
description: '[Merchant acquiring identifier]'
example:
- '312345'
- '312344'
items:
type: string
description: '[Merchant acquiring identifier]'
example: '["312345","312344"]'
description: '[Merchant Object]'
MerchantSearchResponse:
required:
- acquirerSegmentId
- merchants
type: object
properties:
merchants:
type: array
description: '[List of merchant search results]'
items:
$ref: '#/components/schemas/Merchant'
acquirerSegmentId:
type: integer
description: '[This field must contain a valid VAU acquirer segment Id.]'
format: int32
example: 2
description: '[Merchant Search Response]'
MerchantResponse:
required:
- enrollStatus
type: object
properties:
reject:
$ref: '#/components/schemas/RejectMerchant'
merchantId:
type: string
description: >-
[Acquirer assigns the merchant ID. This field must contain a valid
VAU Merchant ID.]
example: '000000705853'
enrollStatus:
type: string
description: >
[Merchant enrollment status, This field contains one of the
following status:
* Success Merchant is enrolled successfully
* In-Progress Merchant enrollment is in progress
* Reject Merchant is rejected, reject code and reject code and
reject message will be returned]
example: Reject
merchantName:
type: string
description: '[Name of Merchant]'
example: GS PERFORMANCE
description: '[Merchant Response]'
RejectedRequestResponse:
title: RejectedRequestResponse
required:
- acquirerSegmentId
- merchantId
type: object
properties:
merchantId:
type: string
description: >-
[Acquirer assigns the merchant ID. This field must contain a valid
VAU Merchant ID.]
example: '000000705853'
rejectReason:
type: string
description: >
[This field contains the description of the reject code:
* AAcquirer segment is not enrolled
* MMerchant is not enrolled
* VNo data found in inquiry field
* 9Max PANs threshold passed for single request. Max PANs allowed
are bound to change, at present this limit is set to 100.]
example: Acquirer segment is not enrolled
subMerchantName:
type: string
description: >-
[If inquiry is submitted by a merchant, then this field must be
empty.
If inquiry is submitted by a third-party aggregator on behalf of a
merchant, then this field must be populated with the sub- merchant
name. Acquirers and processors must pass the value to Visa. No
special characters are allowed.]
example: SUB-MERCHANT-NAME
rejectReasonCode:
type: string
description: >
[This field contains one of the following codes:
* AAcquirer segment is not enrolled
* MMerchant is not enrolled
* VNo data found in inquiry field
* 9Max PANs threshold passed for single request. Max PANs allowed
are bound to change, at present this limit is set to 100.]
example: A
acquirerSegmentId:
type: integer
description: '[This field must contain a valid VAU Acquirer Segment ID.]'
format: int32
example: 9992
acquirerInformation:
type: string
description: >-
[If provided, it contains acquirer or merchant proprietary
information such as a customer ID that is carried in the merchants
back-end system.]
example: 180720216995565000113 XXXXAIBR
description: '[Reject Request]'
SuccessfulStopAdviceResponse:
required:
- cardAcceptorId
- cardholderAccountNumber
- merchantName
type: object
properties:
startDate:
type: string
description: >-
[This field contains the start date, which shouldn't be less than
the current date, and its format is yyyy-mm-dd, the default value is
the current date.]
format: date
merchantName:
type: string
description: '[This field must contain merchant name.]'
example: TestMerchant
responseCode:
type: string
description: |
[This field contains one of the following response codes:
* 1Stop advice applied in both RTVAU and VAU
* 2Stop advice applied in VAU
* 3Stop advice applied in RTVAU
example: '1'
cardAcceptorId:
type: string
description: '[This field must contain card acceptor id.]'
example: '89389898'
responseMessage:
type: string
description: |
[This field contains the description of the response message:
* 1Stop advice applied in both RTVAU and VAU
* 2Stop advice applied in VAU
* 3Stop advice applied in RTVAU
example: Stop advice
# --- truncated at 32 KB (50 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/visa/refs/heads/main/openapi/visa-account-updater.yml