openapi: 3.0.1 info: title: Foreign Exchange Rates Account Management service API description: The Account Management web services are used to manage payment controls for existing card accounts and to request virtual accounts while setting controls. The endpoints allow the user to retrieve the status of new account requests, view authorization rules, submit virtual card requisitions for an employee , and retrieve security code (CVV2) details of an existing account. version: '1' servers: - url: https://sandbox.api.visa.com description: Sandbox server security: [] tags: - name: Account Management service description: The Account Management web services are used to manage payment controls for existing card accounts and to request virtual accounts while setting controls. The endpoints allow the user to retrieve the status of new account requests, view authorization rules, submit virtual card requisitions for an employee , and retrieve security code (CVV2) details of an existing account. paths: /vpa/v1/accountManagement/GetSecurityCode: post: tags: - Account Management service summary: Get Security Code description: '' operationId: Get Security Code requestBody: description: Get Security Code Request content: application/json: schema: required: - accountNumber - buyerId - clientId - expirationDate - messageId type: object properties: buyerId: maxLength: 25 type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation(VPA) system. Value format is 0-9. clientId: maxLength: 25 type: string description: Client ID field is a unique identification of the financial institution. This will be provided by Visa at the time of setup. messageId: maxLength: 36 type: string description: Unique identifier for this request. Each request sent to VPA requires its own unique ID. accountNumber: maxLength: 19 type: string description: The full 16 digit Visa account number. expirationDate: maxLength: 6 type: string description: Expiration date of the account for which the CVV2 is requested. The format is MM/YYYY. examples: Default: summary: Default value: clientId: B2BWS_1_1_9999 messageId: '2017-04-06T03:47:20.000Z' buyerId: 9999 accountNumber: 4111111111111111 expirationDate: 10/2022 required: true responses: '200': description: OK content: application/json: schema: type: object properties: GetSecurityResponse: required: - messageID - statusCode - statusDesc type: object properties: messageID: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: maxLength: 6 type: string description: Status code of the response. It is alphanumeric. The values are specific to each method. Example- CS001, CS002, and so on. In case of error please refer to the Error Codes page for this api statusDesc: maxLength: 255 type: string description: Status description of the response. securityCode: maxLength: 3 type: string description: CVV2 number. description: Success '400': description: Refer to the Error Codes page for the list of error codes for this API. content: application/json: schema: type: object properties: messageId: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: maxLength: 6 type: string description: Status code of the response. statusDesc: maxLength: 255 type: string description: Status description of the response. x-codegen-request-body-name: getsecuritycode x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1accountManagement~1GetSecurityCode/post' default: false /vpa/v1/getRequisitionDetails: post: tags: - Account Management service summary: Get Requisition Details description: Get Requisition Details request and response operationId: Get Requisition Details requestBody: description: Get Requisition Details Request content: application/json: schema: required: - accountNumber - buyerId - clientId - messageId type: object properties: buyerId: maxLength: 15 type: string description: Unique numeric identifier for the buyer that's defined by the Issuer. clientId: maxLength: 50 type: string description: Unique identifier for the financial institution, provided by Visa during setup. messageId: maxLength: 36 type: string description: Unique identifier for the API request, generated by the API consumer, for tracking and referencing purposes. Each request mandates a unique messageId. accountNumber: maxLength: 16 type: string description: Account number for which requisition details are being requested. required: true responses: '200': description: In case of error please refer to the Response Codes page for this api content: application/json: schema: type: object properties: GetRequisitionDetailsResponse: type: object properties: rules: type: array description: List of authorization rules set on the account. items: type: object properties: ruleCode: maxLength: 8 type: string description: Contains the authorization Rule Code. For the list of valid Visa Payment Controls (VPC) refer to the overrides: type: array description: 'Complex element which contains one or more overrides for the authorization rules. This element contains: Sequence, Override Code, and Override Value. Override is nothing but a value which you want to change in the default rule.' items: type: object properties: sequence: maxLength: 3 type: string description: Contains the sequence number for the override. Each rule starts with 0 so if you have an SPV and BUS, then SPV will have sequence 0 and BUS will have a 0. If there are multiple fields/overrides within a rule, e.g. SPV. Each override - amount, currency code, range type, etc.- have the same sequence number. E.g. amount, currency code and range type will all have 0. If there is a rule that can have multiple amounts e.g. Exact match, then each VPAS rule overrides must have a unique sequence number so first VPAS has 0, then second has 1, third has 2. overrideCode: maxLength: 33 type: string description: Contains the code for the override. overrideValue: maxLength: 25 type: string description: Contains the value for the override. buyerId: maxLength: 15 type: string description: Unique numeric identifier for the buyer that's defined by the Issuer. endDate: maxLength: 10 type: string description: User specified account validity end date for the requisition clientId: maxLength: 50 type: string description: Unique identifier for the financial institution, provided by Visa during setup. timeZone: maxLength: 12 type: string description: User specified time zone for the requisition start and end dates. messageId: maxLength: 36 type: string description: Unique identifier for the API request. responses: type: array description: 'Complex element which contains a collection of responses returned in the response. This element contains: Response Code, Response Description' items: type: object properties: responseCode: maxLength: 10 type: string description: This element contains the response code sent by the VPA system. The list can be found in the Response Codes page for this api responseDescription: maxLength: 250 type: string description: This element contains the response description. startDate: maxLength: 10 type: string description: User specified account validity start date for the requisition optionalInfo: type: array description: Complex element which allows the web service consumer to pass optional field name and value as name value pairs. A maximum of 50 optional field name and values will be returned. items: type: object properties: optionalFieldName: maxLength: 50 type: string description: Name of the Optional Field optionalFieldValue: maxLength: 100 type: string description: Value of the Optional Field accountNumber: maxLength: 16 type: string description: Account number for which requisition details were requested. mcgRuleAction: maxLength: 5 type: string description: This field defines action on the MCG rules sent in the request. Default value returned is Block even if no value is sent in the request. MCG rules are not defined for the card that has only VPAS rule with value of one cent set. expirationDate: maxLength: 7 type: string description: Contains the expiration date of the card account. Format- MM/YYYY. description: Success x-codegen-request-body-name: body x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1getRequisitionDetails/post' default: false x-hideTryIt: true /vpa/v2/accountManagement/getPaymentControls: post: tags: - Account Management service summary: Get Payment Controls description: This version is recommended for buyers subscribed to Visa payment Control(VPC) and supporting mcgRuleAction field. operationId: Get Payment Controls requestBody: description: Get Payment Controls Request content: application/json: schema: required: - accountNumber - buyerId - clientId - messageId type: object properties: buyerId: maxLength: 15 type: string description: Buyer ID numeric is the buyer identifier as defined in Visa Payables Automation system. This is often the ID defined at the processor for the corporate buyer. This will be provided by the issuer. clientId: maxLength: 50 type: string description: ClientID uniquely identifies a financial institution. This will be provided by the Visa implementation team. messageId: maxLength: 36 type: string description: Unique identifier for the API request. accountNumber: maxLength: 16 type: string description: Account Number for which the auth rules are requested. You must send at least the last 4 digits, but can send up to the entire account number. The value sent should uniquely identify the account number. If the last 4 digits are not unique then it will fail examples: Default: summary: Default value: clientID: B2BWS_84994_1940 messageId: '{{$timestamp}}' buyerID: '84994' accountNumber: '4715338901038473' required: true responses: '200': description: OK content: application/json: schema: type: object properties: GetPaymentControlsResponse: type: object properties: rules: type: array description: List of authorization rules set on the account. items: type: object properties: ruleCode: maxLength: 8 type: string description: Contains the authorization Rule Code. For the list of valid Visa Payment Controls (VPC) refer to the VPC Rules and Overrides table.
For buyers using VANs please refer to the VPP Rules and Overrides table.
. overrides: type: array description: 'Complex element which contains one or more overrides for the authorization rules. This element contains: Sequence, Override Code, and Override Value. Override is nothing but a value which you want to change in the default rule.

For e.g. to set the threshold rule for the account you have requested,if you want to set the threshold as $1000 then you should pass the amount override as 1000 and the currency override as 840.' items: type: object properties: sequence: maxLength: 3 type: string description: Contains the sequence number for the override. Each rule starts with 0 so if you have an SPV and BUS, then SPV will have sequence 0 and BUS will have a 0. If there are multiple fields/overrides within a rule, e.g. SPV. Each override - amount, currency code, range type, etc.- have the same sequence number. E.g. amount, currency code and range type will all have 0. If there is a rule that can have multiple amounts e.g. Exact match, then each VPAS rule overrides must have a unique sequence number so first VPAS has 0, then second has 1, third has 2. overrideCode: maxLength: 33 type: string description: Contains the code for the override.
Note, follow the rule specification (provided in the link in the Rule code field description) as not every ruleCode requires an overrideCode. overrideValue: maxLength: 25 type: string description: Contains the value for the override.
Note, follow the rule specification (provided in the link in the Rule code field description) as not every ruleCode requires an overrideValue. messageId: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: maxLength: 10 type: string description: Status code of the response. It is alphanumeric. The values are specific to each method. The list of status codes can be found in the following link statusDesc: maxLength: 255 type: string description: Status description of the response. mcgRuleAction: maxLength: 5 type: string description: This field defines action on the MCG rules sent in the request. Default value returned is "Block" even if no value sent in request, MCG rules are not defined or card has VPAS(one cent rule) set. For VPP buyers this field won’t be returned. description: Success examples: Default: summary: Default value: statusDesc: Payment control details retrieved successfully. messageId: '{{$timestamp}}' rules: - ruleCode: AIR - ruleCode: AUTO - ruleCode: REST - ruleCode: SPV overrides: - sequence: '0' overrideCode: spendLimitAmount overrideValue: '1000.00' - sequence: '0' overrideCode: maxAuth overrideValue: '10' - sequence: '0' overrideCode: recurringDay overrideValue: '15' - sequence: '0' overrideCode: amountCurrencyCode overrideValue: '840' - sequence: '0' overrideCode: rangeType overrideValue: '1' - sequence: '0' overrideCode: consumedAmount overrideValue: '263.39' - sequence: '0' overrideCode: consumedAuthCount overrideValue: '1' - sequence: '0' overrideCode: balanceAuthAmount overrideValue: '736.61' - sequence: '0' overrideCode: balanceAuthCount overrideValue: '9' statusCode: AMGP000 '400': description: In case of error please refer to the Error Codes page for this api content: application/json: schema: type: object properties: errors: type: array description: array of errors items: type: object properties: code: type: string description: error code statusDesc: type: string description: error description messageId: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: maxLength: 6 type: string description: Status code of the response. statusDesc: maxLength: 255 type: string description: Status description of the response. x-codegen-request-body-name: GetPaymentControls x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1accountManagement~1getPaymentControls/post' default: false - label: v2 - Latest operationPointer: '#/paths/~1vpa~1v2~1accountManagement~1getPaymentControls/post' default: false x-hideTryIt: true /vpa/v1/accountManagement/ManagePaymentControls: post: tags: - Account Management service summary: Manage Payment Controls description: '' operationId: Manage Payment Controls requestBody: content: application/json: schema: required: - accountNumber - buyerId - clientId - messageId type: object properties: source: type: string description: This element indicates whether the request was made for VPA related cards or for VVAM related cards. Valid codes are VPA, VVAM.
Note, if sending source as VPA you must also include a sample invoice. buyerId: maxLength: 25 type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation(VPA) system. Value format is 0-9. eMailId: maxLength: 128 type: string description: Email address of the employee. Note- This email address is only required for VAM clients. clientId: maxLength: 50 type: string description: Client ID field is a unique identification of the financial institution. This will be provided by Visa at the time of setup. invoices: type: array description: This complex element contains the details of all invoices for which the exact match rule needs to be set. items: type: object properties: invoiceDate: maxLength: 10 type: string description: This contains the date of the invoice being paid. Format is YYYY-MM-DD. invoiceAmount: maxLength: 16 type: string description: Invoice amount. maximum length is 16. Maximum number of decimals is two. Format is XXXXXXXXXX9999.99 invoiceNumber: maxLength: 30 type: string description: Invoice Number. messageId: maxLength: 36 type: string description: Unique identifier for this request. Each request sent to VPA requires its own unique ID. accountNumber: maxLength: 16 type: string description: Card account number for which the authorization controls are being managed. companyAdminEMailId: maxLength: 128 type: string description: Contains the company admin email ID. Note- This email address is only required for VAM clients. paymentControlDetails: type: array description: This complex element contains multiple authorization control(s) details. items: type: object properties: endDate: maxLength: 10 type: string description: Contains the last date when the card account and the authorization rules will be effective. All the authorization rules specified in the Requisition detail will be removed from the card the next day (after the end date).
Format is YYYY-MM-DD. rulesSet: type: array description: This complex element contains the details of all invoices for which the exact match rule needs to be set. items: type: object properties: rules: type: array description: 'This complex element contains the details of all the authorization rules that needs to be added/update/deleted or refreshed. ' items: type: object properties: ruleCode: maxLength: 8 type: string description: This contains the rule code.
For detailed information regarding the rule codes and overrides, see the Rules and Overrides table. overrides: type: array description: This complex element contains the details of the overrides for an authorization rule. items: type: object properties: Sequence: maxLength: 3 type: string description: Contains the sequence number for the override. A few authorization rules have multiple overrides and the sequence number identifies each of them uniquely. overrideCode: maxLength: 50 type: string description: Contains the override code. For a list of override codes, refer to the Rules and Overrides table. overrideValue: maxLength: 10 type: string description: Contains the override value. action: maxLength: 1 type: string description: Rule Action valid values are
ATo Add a Payment Controls
RTo Refresh all Payment Controls (replace existing rules with new rules)
XTo Remove All Payment Controls immediately timeZone: maxLength: 12 type: string description: Contains the Time zone to use for the start and end dates. The UTC OFFSET needs to be sent. Like UTC-8 for PST, UTC-6 for CST, UTC+5:30 for IST. startDate: maxLength: 10 type: string description: Contains the date when the card account and the authorization rules on the account will be made effective. Format is YYYY-MM-DD. mcgRuleAction: maxLength: 5 type: string description: 'This field defines action on the MCG rules in the request. Allowed actions are "Allow"" and "Block". If no value provided will be considered as Block. This field is case insensitive. The value "Allow" with MCG rule code "AIR" allows authorization transaction for the card from Airline MCC''s. The value "Block" with MCG rule code "AIR" blocks authorization transaction for the card from Airline MCC''s. The value doesn''t apply to following MCG''s: MCCB,MCCX,CAID,CAIDB,NOTFUEL and ignored.' examples: Default: summary: Default value: clientId: B2BWS_1_1_9999 invoices: - invoiceNumber: INV0001 invoiceAmount: 500 invoiceDate: '2017-02-01' eMailId: aaa@bbb.com paymentControlDetails: - rulesSet: - action: A rules: - ruleCode: VPAS overrides: - sequence: 0 overrideCode: amount overrideValue: 840 - sequence: 0 overrideCode: amount overrideValue: 55 endDate: '2020-03-01' timeZone: UTC-6 startDate: '2017-03-01' messageId: '2017-04-06T03:47:20.000Z' source: VVAM buyerId: 9999 accountNumber: 4111111111111111 companyAdminEMailId: compAdmin@bbb.com required: true responses: '200': description: In case of error please refer to the Error Codes page for this api content: application/json: schema: type: object properties: ManagePaymentResponse: required: - messageID type: object properties: messageID: maxLength: 36 type: string description: Unique identifier which was sent in the request. responses: type: object properties: response: required: - responseCode type: object properties: responseCode: maxLength: 10 type: string description: response code of the response. It is alphanumeric. The values are specific to each method. Example- CS001, CS002, and so on. For the details of the various error codes returned for this method refer to the "Error Codes" table below. responseDescription: maxLength: 100 type: string description: Message ID passed in the Web service request. description: Response Class description: Responses Class description: Success x-codegen-request-body-name: managepaymentcontrols x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1accountManagement~1ManagePaymentControls/post' default: false /vpa/v1/accountManagement/GetAccountStatus: post: tags: - Account Management service summary: Get Account Status description: '' operationId: Get Account Status requestBody: content: application/json: schema: required: - accountRequestID - buyerId - clientId - messageId - supplierId type: object properties: buyerId: maxLength: 25 type: string description: 'Buyer ID is the buyer identifier as defined in Visa Payables Automation. This will be provided by the Visa implementation team. ' clientId: maxLength: 25 type: string description: ClientID uniquely identifies a financial institution. This will be provided by Visa implementation team. messageId: maxLength: 36 type: string description: Unique identifier for identifying the request. Each request sent to VPA requires its own unique ID. supplierId: maxLength: 30 type: string description: Supplier id associated with the supplier for which the account was requested. accountRequestID: maxLength: 13 type: string description: A unique ID generated by the VPA system, which the requester can use for checking the status of the card account if it is requested from the processor. examples: Default: summary: Default value: accountRequestId: 1203780061142 clientId: B2BWS_1_1_9999 supplierId: TestSupplierTen messageId: '2017-04-06T03:47:20.000Z' buyerId: 9999 required: true responses: '201': description: Created content: application/json: schema: type: object properties: GetAccountResponse: required: - accountNumber - expirationDate - messageID - statusCode - statusDesc type: object properties: messageID: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: maxLength: 6 type: string description: Status code of the response. It is alphanumeric. The values are specific to each method. Example- AP001, AP002, and so on. For the details of the various error codes returned for this method refer to the "Error Codes" table. statusDesc: maxLength: 255 type: string description: Status description of the response. accountNumber: maxLength: 19 type: string description: This field will contain the account number of the account created at the processor once it is activated. The account number will be masked in the response if the corresponding Client ID is configured for masking. expirationDate: maxLength: 6 type: string description: Account expiration date. The format is- MMYYYY. description: OK '400': description: Error Codes content: application/json: schema: type: object properties: MC001: type: object description: Card account request successful. MC002: type: object description: Message ID is not unique. MC003: type: object description: Invalid Client ID. MC004: type: object description: Invalid buyer. MC008: type: object description: Invalid supplier ID. MC025: type: object description: Bank or buyer not subscribed. MC035: type: object description: Invalid message ID. MC059: type: object description: Card account created and activation pending. MC060: type: object description: Card account creation failed. MC061: type: object description: Card account creation pending. MC062: type: object description: Supplier ID does not exist. MC063: type: object description: AccountRequestID does not exist in the system. MC064: type: object description: AccountRequestID does not belong to this buyer and supplier combination. MC065: type: object description: Invalid AccountRequestID. x-codegen-request-body-name: getaccountstatus x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1accountManagement~1GetAccountStatus/post' default: false /vpa/v1/accountManagement/fundingAccount/get: post: tags: - Account Management service summary: Get Funding AccountDetails description: '' operationId: Get Funding AccountDetails requestBody: content: application/json: schema: required: - accountNumber - buyerId - clientId - messageId type: object properties: buyerId: maxLength: 25 type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation. This will be provided by the Issuer. clientId: maxLength: 50 type: string description: ClientID uniquely identifies a financial institution. This will be provided by Visa implementation team. messageId: maxLength: 36 type: string description: Unique identifier for identifying the request. Each request sent to VPA requires its own unique ID. accountNumber: type: integer description: The full 16 digit funding account number. Should be a valid card account number examples: Default: summary: Default value: clientId: B2BWS_FDR_5126 messageId: '{{$timestamp}}' buyerId: '107777' accountNumber: 480733000718 3252 required: true responses: '201': description: Created content: application/json: schema: type: object properties: GetFundingAccountDetailsResponse: type: object properties: errors: type: array description: In case of error please refer to the Error Codes page for this api items: type: object properties: Error: required: - code - statusDesc type: object properties: code: type: string description: error code statusDesc: type: string description: error description messageId: maxLength: 36 type: string description: Unique identifier which was sent in the request. proxyPools: type: array description: Give details about the associated proxy pools. items: type: object properties: usedAccounts: type: integer description: Total number of used accounts in the proxy pool associated to the funding account. deletedAccounts: type: integer description: Total number of Deleted Accounts in the proxy pool associated to the funding account. proxyPoolNumber: type: integer description: Proxy Pool number associated with the funding account sent in the request. availableAccounts: type: integer description: Total number of active pseudo accounts in the proxy pool associated to the funding account. statusCode: type: string description: Status code of the response. statusDesc: type: string description: Status description of the response. creditLimit: type: integer description: Denotes the credit limit of the funding account. currencyCode: maxLength: 3 type: string description: 'Denotes the ISO alpha currency code for billing currency for the funding account number. ' accountNumber: type: integer description: The full 16 digit funding account number. availableLimit: type: integer description: Available limit of the funding account. This field will be populated only if processor integration is on blockPurchases: type: boolean description: Whether purchases on the funding account are blocked or allowed. If set to true, this will prevent any purchases on the funding account itself. If set to “false” then purchases will allowed to be made on the funding account. currentBalance: type: integer description: Current Balance on the funding account. This field will be populated only if processor integration is on defaultAccount: type: boolean description: 'Denotes if this funding account is designated as the default funding account. ' expirationDate: maxLength: 10 type: string description: Expiration date of the funding account. Will be provided in yyyy-mm-dd format. activePseudoAccounts: type: integer description: Total number of active pseudo accounts created using the funding account across all proxy pools description: '' examples: Default: summary: Default value: availableLimit: 0 default: true statusDesc: Funding Account has been retrieved successfully blockPurchases: true currentBalance: 0 messageId: '1620851413' creditLimit: 10 accountNumber: XXXXXXXXXXXX3252 currencyCode: USD statusCode: AMGF000 expirationDate: '2023-05-01' activePseudoAccounts: 0 x-codegen-request-body-name: GetFundingAccountDetails x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1accountManagement~1fundingAccount~1get/post' default: false x-hideTryIt: true /vpa/v1/requisitionService: post: tags: - Account Management service summary: Request Virtual Account description: Requisition API Request and Response operationId: Request Virtual Account requestBody: description: Requisition Request content: application/json: schema: required: - action - buyerID - clientID - messageID type: object properties: action: maxLength: 1 type: string description: 'Indicates the requisition action to be performed. Valid choices are:
"A" for Add: Initiates a new virtual account requisition.
"U" for Update: Modifies an existing virtual account requisition. Ensure that all requisition details and optional fields are included in the request since these will replace previous settings.
"D" for Delete: Deletes a requisition. This sets the validity end date to the current date, leading to requisition expiration and the one-cent rule being applied to the account.' buyerID: maxLength: 25 type: string description: Unique numeric identifier for the buyer that's defined by the Issuer. clientID: maxLength: 25 type: string description: Unique identifier for the financial institution, provided by Visa during setup. messageID: maxLength: 36 type: string description: Unique identifier for the request, generated by the API consumer, for tracking and referencing purposes. Each request mandates a unique messageId. proxyPoolID: maxLength: 19 type: string description: 'Unique identifier for the single-use proxy pool from which the account should be selected. For a new requisition (action: "A"), the system picks an available account from this pool, applies all requisition parameters (i.e. validity period, authorization rules), and provides the account number in the response. If only one Proxy Pool exists for the buyer, this field is optional as the system will default to the existing pool.

Required for action: "A", if the buyer has more than one single-use proxy pool.' OptionalInfo: type: array description: 'This complex element enables API consumers to send optional name-value pairs, which will appear in the transaction data for the requisitioned account. A maximum of 50 optional feild name and values can be passed in the request.

This complex element contains: optionalFieldName, optionalFieldValue' items: type: object properties: optionalFieldName: maxLength: 50 type: string description: Name of the Optional Field optionalFieldValue: maxLength: 100 type: string description: Value of the Optional Field accountNumber: maxLength: 16 type: string description: 'The account number associated with the virtual account requisition being updated or deleted. This number was returned with the initial requisition add request (action A).

Required if action: "U" or "D"' numberOfCards: maxLength: 4 type: string description: 'Indicates the number of virtual accounts being requested.

If a single card is requested, an available account is selected from the proxy pool specified in the proxyPoolID parameter. Payment controls will subsequently be applied to the account, taking effect from the specified requistion start date and ceasing on the requisition end date. The API response will return the account number and expiration date.

If multiple cards are requested, a file is created detailing each account number and expiration date and delivered via SFTP (these details won''t be returned in the API). All accounts will have identical rules and configurations. To use this bulk request feature, please contact your Visa representative.

Required if action: "A"' requisitionDetails: type: object properties: rules: type: array description: 'Complex elements which contain all the authorization rules to be set on the requested account. Contains: ruleCode, overrides. It''s best practice to maintain at least one spend control on an account. For pseudo accounts and TSYS VANs, a minimum of one rule is required.' items: type: object properties: ruleCode: maxLength: 8 type: string description: 'Denotes the unique code for the authorization rule. For example, "VPAS" is the ruleCode for the exact amount authorization rule.

Refer to the VPC Rules and Overrides table for the complete list of valid Visa Payment Controls (VPC) rules and specifications.

For buyers using TSYS VANs, please refer to the VPP Rules and Overrides table.

Required if action: "A" or "U"' overrides: type: array description: 'Overrides are supplementary request parameters that provide additional context to the primary "ruleCode" parameter. These may be required or optional, depending on the rule. This complex element contains: sequence, overrideCode, and overrideValue.

For example, to set a $1000 aurthorization limit on a requested account, you would include an "amountValue" override of "1000" and an "amountCurrencyCode" override of "USD" with "ruleCode": "PUR"' items: type: object properties: sequence: maxLength: 3 type: string description: Contains the sequence number for the override. Each rule starts with 0 so if you have an SPV and BUS, then SPV will have sequence 0 and BUS will have a 0. If there are multiple fields/ overrides within a rule, e.g. SPV. Each override - amount, currency code, range type, etc.- have the same sequence number. E.g. amount, currency code and range type will all have 0. If there is a rule that can have multiple amounts e.g. Exact match, then each VPAS rule overrides must have a unique sequence number so first VPAS has 0, then second has 1, third has 2. overrideCode: maxLength: 50 type: string description: The code for the authorization rule override.

Required for actions "A" and "U" if the corresponding ruleCode mandates overrideCode values. Please refer to the Rules and Overrides table as not all ruleCodes necessitate an overrideCode. For instance, ruleCode "SPV" requires overrideCode "rangeType" and "updateFlag", while ruleCode "AUTO" has no applicable overrides. overrideValue: maxLength: 100 type: string description: 'The value for the authorization rule override.

Required for action: "A" and "U" for each respective overrideCode that''s included in the request.' endDate: maxLength: 10 type: string description: 'The validity end date for the requisitioned account, formatted as YYYY-MM-DD or MM/DD/YYYY. Upon reaching the end date, the system revokes all existing authorization rules, and applies the 1-cent rule, effectively rendering the account unusable. For example, an endDate of 2022-10-31 results in the 1-cent rule being applied at 12:00:01 on 2022-11-01. This date must not exceed the funding account''s expiration date.

Note for Buyers using TSYS VANs: startDate and endDate must be sent in Eastern time zone.

Note for Buyers using a legacy model with processor PANs: In the absence of a requisition ''endDate'', the account''s authorization rules will remain effective until the expiration of the associated card.

Required if action: "A" or "U"' timeZone: maxLength: 12 type: string description: 'Denotes the time zone for the requisition''s startDate and endDate. The system, in respect to the chosen time zone, activates the authorization rules from 0:00 a.m. on the startDate until 0:00 a.m. on the day following the endDate (i.e. endDate +1)

Time zones should adhere to the UTC offset format. For example,"UTC-08:00" for PST, "UTC-06:00" for CST, "UTC+05:30" for IST, etc.

Note for Buyers using TSYS VANs: startDate and endDate must be sent in Eastern time zone.

Required if action: "A" or "U"' startDate: maxLength: 10 type: string description: 'Denotes the start date of account validity. Dates should adhere to either the YYYY-MM-DD or MM/DD/YYYY format and can be set up to three years in the future. On the specified start date, the authorization rules defined in the request will be implemented on the account. Until this date arrives, the system assigns a preliminary 1 cent exact match authorization rule to the account. In the absence of this field value, the card will be activated instantly, and the authorization rules from the requisition are applied immediately.

Note for Buyers using TSYS VANs: startDate and endDate must be sent in Eastern time zone.

Please note, once the card is activated, it''s not possible to reset the startDate to a future date.' mcgRuleAction: maxLength: 5 type: string description: 'Defines the action for Merchant Category Group (MCG) based rules applied to the requested card(s). Accepts "Allow" or "Block", defaulting to "Block" if not provided. This field only supports Visa Payment Controls (VPC) enabled buyers and is ignored for buyers using TSYS VANs.

Example: the value "Allow" with MCG rule code "AIR" authorizes transactions from Airline MCC''s. Conversely, "Block" with the same code prevents transactions from Airline MCC''s.

Please note, the mcgRuleAction value is not applicable to following MCG rules: MCCB, MCCX, CAID, CAIDB, NOTFUEL.' description: This complex element contains the requisition details. examples: Default: summary: Default value: clientId: B2BWS_1_1_9999 requisitionDetails: endDate: '2018-05-20' timeZone: UTC-8 rules: - ruleCode: SPV overrides: - sequence: '1' overrideCode: spendLimitAmount overrideValue: '55.45' - sequence: '2' overrideCode: maxAuth overrideValue: '10' - sequence: '3' overrideCode: amountCurrencyCode overrideValue: '840' - sequence: '4' overrideCode: rangeType overrideValue: '3' - sequence: '5' overrideCode: startDate overrideValue: 05/11/2018 - sequence: '5' overrideCode: endDate overrideValue: 05/20/2018 - sequence: '7' overrideCode: updateFlag overrideValue: NOCHANGE - ruleCode: PUR overrides: - sequence: '0' overrideCode: amountCurrencyCode overrideValue: '840' - sequence: '0' overrideCode: amountValue overrideValue: '55' - ruleCode: EAM overrides: - sequence: '0' overrideCode: amountCurrencyCode overrideValue: '840' - sequence: '0' overrideCode: amountValue overrideValue: '55' - ruleCode: XBRA overrides: - sequence: '0' overrideCode: amountCurrencyCode overrideValue: '840' - sequence: '0' overrideCode: amountValue overrideValue: '55' - ruleCode: ATML overrides: - sequence: '0' overrideCode: amountCurrencyCode overrideValue: '840' - sequence: '0' overrideCode: amountValue overrideValue: '55' - ruleCode: TOLRNC overrides: - sequence: '0' overrideCode: amountCurrencyCode overrideValue: '840' - sequence: '0' overrideCode: minValue overrideValue: '1' - sequence: '0' overrideCode: maxValue overrideValue: '50' - ruleCode: CAID overrides: - sequence: '0' overrideCode: CAIDValue overrideValue: '123456' - ruleCode: ATM - ruleCode: ECOM - ruleCode: CNP - ruleCode: NOC - ruleCode: ADT - ruleCode: XBR - ruleCode: FUEL - ruleCode: HOT - ruleCode: AUTO - ruleCode: AIR - ruleCode: REST - ruleCode: JEWL - ruleCode: ELEC - ruleCode: ALC - ruleCode: GTM - ruleCode: OSS - ruleCode: GROC - ruleCode: ENT - ruleCode: UTIL - ruleCode: CLOTH - ruleCode: MED - ruleCode: VPAS overrides: - sequence: '0' overrideCode: amountCurrencyCode overrideValue: '840' - sequence: '0' overrideCode: amountValue overrideValue: '55.45' startDate: '2018-05-11' proxyPoolId: Proxy12345 optionalInfo: - optionalFieldValue: '12345678901234567' optionalFieldName: TWOTest - optionalFieldValue: '12345112' optionalFieldName: '12345' action: A messageId: '1526077012761' numberOfCards: '1' buyerId: '9999' accountNumber: '' required: true responses: '200': description: In case of error please refer to the Response Codes page for this api content: application/json: schema: type: object properties: RequisitionVirtualAccountResponse: type: object properties: messageID: maxLength: 36 type: string description: Unique identifier which was sent in the request. responses: type: array description: 'Complex element which contains a collection of responses returned in the response. This element contains: Response Code Response Description' items: type: object properties: responseCode: maxLength: 10 type: string description: This element contains the response code sent by the VPA system. The list can be found in the Response Codes page for this api responseDescription: maxLength: 250 type: string description: This element contains the response description. accountNumber: maxLength: 16 type: string description: VPA system sends the account number of the account picked from the proxy pool for the Add action. For update and delete actions, the system returns the account which was passed in the request. If the requisition failed, this field will be blank. expirationDate: maxLength: 7 type: string description: Contains the expiration date of the card account. Format- MM/YYYY. description: Success x-codegen-request-body-name: body x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1requisitionService/post' default: false /vpa/v1/accountManagement/VirtualCardRequisition: post: tags: - Account Management service summary: Virtual Card Requisition description: '' operationId: Virtual Card Requisition requestBody: content: application/json: schema: required: - accountNumber - buyerId - clientId - employee - messageId - proxyPoolId - requisitionDetails type: object properties: buyerId: maxLength: 25 type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation (VPA) system. Value format is 0-9. clientId: maxLength: 50 type: string description: Client ID field is a unique identification of the financial institution. This will be provided by Visa at the time of setup. It will need to be passed in all requests. employee: required: - companyAdminEMailId - eMailId - employeeId - firstName - lastName type: object properties: GL: maxLength: 76 type: string description: Contains the employee GL code. address: type: object properties: city: maxLength: 60 type: string description: Contains the city of the employee’s office address. state: maxLength: 12 type: string description: Contains the state of the employee’s office address. postalCode: maxLength: 14 type: string description: Contains the postal code of the employee’s office address. countryCode: maxLength: 14 type: string description: Contains the ISA Alphanumeric Country Code portion of the employee’s office address. For e.g., USA. addressline1: maxLength: 100 type: string description: Contains the first line of the employee's office address. addressline2: maxLength: 100 type: string description: Contains the second line of the employee's office address. description: Address Class eMailId: maxLength: 128 type: string description: Contains the email address of the employee. lastName: maxLength: 50 type: string description: Contains the last name of the employee. firstName: maxLength: 60 type: string description: Contains the first name of the employee. costCenter: maxLength: 50 type: string description: Contains the Cost Center of the employee. employeeId: maxLength: 10 type: string description: Contains the employee ID. companyAdminEMailId: maxLength: 128 type: string description: Contains the company administrator’s email ID. description: Employee Class messageId: maxLength: 36 type: string description: 'Unique identifier for this request. Each request sent to VPA requires its own unique ID. ' proxyPoolId: maxLength: 19 type: string description: Indicates the virtual card Proxy Pool Identifier. accountNumber: type: number description: Contains the card account number value. The account number is required if the consumer wants to update existing requisition parameters like the rules, effective date, etc. optionalfield1: maxLength: 100 type: string description: Value for the optional field 1. Free format field 1. optionalfield2: maxLength: 100 type: string description: Value for the optional field 2. Free format field 2. optionalfield3: maxLength: 100 type: string description: Value for the optional field 3. Free format field 3. optionalfield4: maxLength: 100 type: string description: Value for the optional field 4. Free format field 4. optionalfield5: maxLength: 100 type: string description: Value for the optional field 5. Free format field 5. requisitionDetails: type: array description: This complex element contains the requisition details. items: type: object properties: rules: type: array description: These complex elements contains information regarding the rule codes and overrides. items: type: object properties: ruleCode: maxLength: 8 type: string description: "This contains the rule code.
For detailed information regarding\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n the rule codes and overrides, see the Rules\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n and Overrides table." overrides: type: array description: This complex element contains the details of the overrides for an authorization rule. items: type: object properties: Sequence: maxLength: 3 type: string description: Contains the sequence number for the override. A few authorization rules have multiple overrides and the sequence number identifies each of them uniquely. overrideCode: maxLength: 50 type: string description: Contains the override code. For a list of override codes, refer to the Rules and Overrides table. overrideValue: maxLength: 10 type: string description: Contains the override value. endDate: maxLength: 10 type: string description: Contains the last date when the card account and the authorization rules will be effective. All the authorization rules specified in the Requisition detail will be removed from the card the next day (after the end date). The application will set the one-cent rule on the card the next day for VAM clients. Format is YYYY-MM-DD. timeZone: maxLength: 12 type: string description: Contains the Time zone to use for the start and end dates. The UTC OFFSET needs to be sent. Like UTC-8 for PST, UTC-6 for CST, UTC+5:30 for IST. startDate: maxLength: 10 type: string description: Contains the date when the card account and the authorization rules on the account will be made effective. Format is YYYY-MM-DD. examples: Default: summary: Default value: optionalField1: optionalField1 clientId: B2BWS_1_1_9999 requisitionDetails: - endDate: '2020-03-01' timeZone: UTC-6 rules: - ruleCode: VPAS overrides: - sequence: 0 overrideCode: amount overrideValue: 840 - sequence: 0 overrideCode: amount overrideValue: 55 startDate: '2017-02-01' proxyPoolId: M7test messageId: '2017-04-06T03:47:20.000Z' buyerId: 9999 employee: lastName: lname firstName: fname address: city: FC countryCode: USA postalCode: 94404 addressLine1: Address1 addressLine2: Address2 state: CA gl: 12 eMailId: aaa1@bbb.com costCenter: 12 employeeId: 772288 companyAdminEMailId: compAdmin@bbb.com accountNumber: 4111111111111111 optionalField4: optionalField4 optionalField5: optionalField5 optionalField2: optionalField2 optionalField3: optionalField3 required: true responses: '201': description: Created content: application/json: schema: type: object properties: VCardRequistionResponse: required: - messageID type: object properties: messageID: maxLength: 36 type: string description: Unique identifier which was sent in the request. responses: type: object properties: response: required: - responseCode type: object properties: responseCode: maxLength: 10 type: string description: response code of the response. It is alphanumeric. The values are specific to each method. Example- CS001, CS002, and so on. For the details of the various error codes returned for this method refer to the "Error Codes" table below. responseDescription: maxLength: 100 type: string description: Message ID passed in the Web service request. description: Response Class description: Responses Class accountNumber: maxLength: 16 type: string description: Contains the Card account number assigned to the employee. requisitionId: maxLength: 26 type: string description: System will generate the Requisition ID for each request (when card is assigned to the Employee.) Note- The requisition ID is created only for a new requisition request. expirationDate: maxLength: 6 type: string description: Contains the expiration date of the card account. Format is YYYYMM. description: Success '400': description: Error Codes content: application/json: schema: type: object properties: '2': type: object description: Message ID is not unique. '4': type: object description: Buyer details you have provided is invalid. '6': type: object description: MessageID cannot be more than 36 characters. '12': type: object description: Buyer ID cannot be more than 15 characters. '25': type: object description: Bank or Buyer is not yet set up. '35': type: object description: Sequence is mandatory for all rules. Provide a valid sequence for the rule. '71': type: object description: Sequence is mandatory for all rules. Provide a valid sequence for the rule. '93': type: object description: System Exception. '516': type: object description: Account number you have provided is invalid. '72801': type: object description: Proxy Pool ID you have provided contains invalid characters. '72802': type: object description: The first character of the Proxy Pool ID you have provided is invalid. '72803': type: object description: The second character of the Proxy Pool ID you have provided is invalid. '72804': type: object description: Proxy Pool ID you have provided is not yet set up. '72805': type: object description: First Name you have provided contains invalid characters. '72806': type: object description: First Name cannot be more than 60 characters. '72807': type: object description: Last Name you have provided contains invalid characters. '72808': type: object description: Last Name cannot be more than 60 characters. '72809': type: object description: Employee ID contains invalid characters. '72810': type: object description: Employee ID cannot be more than 10 characters. '72811': type: object description: Email ID cannot be more than 128 characters. '72812': type: object description: Email ID you have provided is invalid. '72813': type: object description: Company Admin Email ID cannot be more than 128 characters. '72814': type: object description: Company Email ID you have provided is Invalid. '72815': type: object description: Cost Center you have provided contains invalid characters. '72816': type: object description: Cost Center cannot be more than 50 characters '72817': type: object description: GL you have provided contains invalid characters. '72818': type: object description: GL cannot be more than 76 characters. '72819': type: object description: Address Line 1 you have provided contains invalid characters. '72820': type: object description: Address Line 1 cannot be more than 100 characters. '72821': type: object description: Address Line 2 you have provided contains invalid characters. '72822': type: object description: Address Line 2 cannot be more than 100 characters. '72823': type: object description: City you have provided contains invalid characters. '72824': type: object description: City cannot be more than 60 characters. '72825': type: object description: State you have provided contains invalid characters. '72826': type: object description: State cannot be more than 12 characters. '72827': type: object description: Postal Code you have provided contains invalid characters. '72828': type: object description: Postal Code cannot be more than 14 characters. '72829': type: object description: Country Code you have provided contains invalid characters. '72830': type: object description: Country Code cannot be more than 5 characters. '72831': type: object description: Optional Field 1 you have provided contains invalid characters. '72832': type: object description: Optional Field 1 cannot be more than 100 characters. '72833': type: object description: Optional Field 2 cannot be more than 100 characters. '72834': type: object description: Optional Field 3 you have provided contains invalid characters. '72835': type: object description: Optional Field 3 cannot be more than 100 characters. '72836': type: object description: Optional Field 4 you have provided contains invalid characters. '72837': type: object description: Optional Field 4 cannot be more than 100 characters. '72838': type: object description: Optional Field 5 you have provided contains invalid characters. '72839': type: object description: Optional Field 5 cannot be more than 100 characters '72840': type: object description: Start Date you have provided contains invalid characters. '72841': type: object description: Start Date cannot be more than 10 characters. '72842': type: object description: Start Date you have provided is invalid. Please provide a valid start date in YYYY-MM-DD format. '72843': type: object description: End Date you have provided contains invalid characters. '72844': type: object description: End Date cannot be more than 10 characters. '72845': type: object description: End Date you have provided is invalid. Please provide a valid start date in YYYY-MM-DD format. '72846': type: object description: End Date should not be in the past. '72847': type: object description: Time Zone cannot be more than 12 characters. '72848': type: object description: Time Zone you have provided contains invalid characters. '72849': type: object description: Rule Code is not valid. '72850': type: object description: Sequence is mandatory for all rules. Provide a valid sequence for the rule '72851': type: object description: Override code provided for the rule. Required- (Rule code for which the Override code is invalid) contains invalid characters. '72852': type: object description: Override code cannot be more than 50 characters. Please provide a valid override code for the rule. '72853': type: object description: Override code provided for the rule '72854': type: object description: Override Value is mandatory for all rules with overrides. Provide a valid Override Value. '72855': type: object description: Override value provided for the rule '72856': type: object description: Override value cannot be more than 8 characters. Please provide a valid override value for the rule. '72858': type: object description: The Start Date and End Dates you have provided should not overlap. '72860': type: object description: An account from the proxy pool sent in the request is already assigned to the employe '72861': type: object description: No card accounts available in the proxy pool sent in the request. '72891': type: object description: First Name is mandatory. '72892': type: object description: Last Name is mandatory. '72893': type: object description: Employee ID is mandatory. '72894': type: object description: End Date is mandatory. '72895': type: object description: Email Id is mandatory. '72896': type: object description: Company Admin Email Id is mandatory. '72897': type: object description: Time Zone is mandatory. '72898': type: object description: Time Zone should start with UTC. '72900': type: object description: Buyer is not subscribed for VAM. '72902': type: object description: Refresh Action should not be followed by any other Action. '72905': type: object description: Date range and rule code of the request is overlapping with data available in system. '72906': type: object description: Only one period is allowed for Single Use cards. '72927': type: object description: Proxy number length should be between 1 and 19. '72928': type: object description: ProxyPoolId is mandatory. '72929': type: object description: Country Code is mandatory. '728321': type: object description: Optional Field 2 you have provided contains invalid characters. '729061': type: object description: Only one period is allowed for Single Use cards. x-codegen-request-body-name: virtualcardrequisition x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1accountManagement~1VirtualCardRequisition/post' default: false /vpa/v1/accountManagement/ListPaymentControl: post: tags: - Account Management service summary: List Payment Control description: '' operationId: List Payment Control requestBody: content: application/json: schema: required: - accountNumber - buyerId - clientId - messageId type: object properties: buyerId: maxLength: 25 type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation (VPA) system. Value format is 0-9. clientId: maxLength: 25 type: string description: Client ID field is a unique identification of the financial institution. This will be provided by Visa at the time of setup. messageId: maxLength: 36 type: string description: Unique identifier for this request. Each request sent to VPA requires its own unique ID. accountNumber: maxLength: 19 type: string description: Valid card account for which the authorization rules are requested. examples: Default: summary: Default value: clientId: B2BWS_1_1_9999 messageId: '2017-04-06T03:47:20.000Z' buyerId: 9999 accountNumber: 4111111111111111 required: true responses: '201': description: Created content: application/json: schema: type: object properties: ListPaymentResponse: required: - alertRequired - messageID - statusCode - statusDesc type: object properties: channel: type: object properties: channelType: maxLength: 1 type: string description: Delivery channel type for the authorization decline alert. The only supported value is 1, which indicates that the channel type is email. channelValue: maxLength: 70 type: string description: Value of the selected channel. Since we support only emails, this will be the email address where the decline notification needs to be sent. description: Channel Class trigger: type: array description: 'This complex element contains the details of the authorization rules set on the account. Currently only VPAS rule is supported in this web service. ' items: type: object properties: amount: maxLength: 16 type: string description: 'Value of the amount override for the exact match (VPAS) rule. ' triggerType: maxLength: 10 type: string description: "Authorization Rule Code. Valid value is- \n VPAS" currencyCode: maxLength: 3 type: string description: 'Currency code which is used for the VPA rule. This is the rule currency code. All ISO currency codes are supported. Sample value is- USD. ' messageID: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: maxLength: 6 type: string description: Status code of the response. It is alphanumeric. The values are specific to each method. Example- AP001, AP002, and so on. statusDesc: maxLength: 255 type: string description: Status description of the response. alertRequired: maxLength: 1 type: string description: Indicates whether the notifications regarding declines due to authorization rules will to be sent to the channel (email or phone) or not. description: Success '400': description: Error Codes content: application/json: schema: type: object properties: GP001: type: object description: List of payment controls is successfully returned. GP002: type: object description: Message ID is not unique. GP003: type: object description: Invalid client. GP004: type: object description: Invalid buyer. GP005: type: object description: Invalid account number. GP010: type: object description: Buyer does not match with the issuer. GP011: type: object description: Account number does not match with the buyer. GP016: type: object description: System exception. GP017: type: object description: Account does not exist in the system. GP018: type: object description: Account is not registered. GP019: type: object description: Failed to get payment control list. GP020: type: object description: Payment control is not set for the bank. GP021: type: object description: Payment control is not set for the buyer. GP025: type: object description: Bank or buyer not enrolled. GP027: type: object description: Request is already processed. GP033: type: object description: Invalid message ID. GP035: type: object description: Invalid message ID. x-codegen-request-body-name: listpaymentcontrol x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1accountManagement~1ListPaymentControl/post' default: false /vpa/v1/accountManagement/fundingAccount/update: post: tags: - Account Management service summary: Update Funding Account description: '' operationId: Update Funding Account requestBody: content: application/json: schema: required: - accountNumber - buyerId - clientId - messageId type: object properties: action: maxLength: 1 type: string description: 'Specifies the operation to be performed on the funding account. Valid values are:
''U'' for Update (modifying the details of an existing funding account)
''D'' for Delete (removing the funding account from the Buyer).

If no action value is provided, the system will automatically default to ''U'' (Update).

Note: Before submitting a request to delete a funding account, all active payment instructions and account requisitions for the funding account must be canceled, and all associated proxy pools must be deleted. ' buyerId: maxLength: 25 type: string description: Buyer ID is the numeric buyer identifier as defined in Visa Payables Automation. This will be provided by the Issuer. clientId: maxLength: 50 type: string description: ClientID uniquely identifies a financial institution. This will be provided by Visa implementation team. messageId: maxLength: 36 type: string description: Unique identifier for identifying the request. Each request sent to VPA requires its own unique ID. creditLimit: type: integer description: Denotes the credit limit of the funding account. This field can be updated only if processor integration is disabled for the buyer, and in this case changes must also be made at the processor. Not applicable for processor integration because VPA goes directly to the processor for this field. accountNumber: type: integer description: The full 16 digit funding account number. Should be a valid card account number blockPurchases: type: boolean description: Ability to Block or allow purchases on the funding account. This field is optional and if not provided will be set to ‘true’ and will prevent any purchases from being made on the funding PAN/ funding account. This should be set to ‘false’ if you want to remove the block on the Funding PAN/funding account and allow it to be used for purchases. This is an optional field. Valid values are true or false. defaultAccount: type: boolean description: Denotes if this funding account should be designated as the default funding account for this buyer. This field can be updated at any time. expirationDate: maxLength: 10 type: string description: Denotes the Expiration date of the funding account. This field can be updated only if processor integration is disabled for the buyer, and in this case changes must also be made at the processor. Not applicable for processor integration because VPA goes directly to the processor for this field. Should be provided in yyyy-mm-dd format. Always provide the last day of the month for dd. The system will set the last day of the month even if you provide a different day. examples: Default: summary: Default value: clientId: B2BWS_FDR_5126 blockPurchases: 'false' messageId: '{{$timestamp}}' defaultAccount: 'true' buyerId: '107777' accountNumber: 4807330007183252 required: true responses: '201': description: Created content: application/json: schema: type: object properties: UpdateFundingAccountResponse: type: object properties: errors: type: array description: In case of error please refer to the Error Codes page for this api items: type: object properties: Error: required: - code - statusDesc type: object properties: code: type: string description: error code statusDesc: type: string description: error description messageId: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: type: string description: Status code of the response. statusDesc: type: string description: Status description of the response. accountNumber: type: integer description: Denotes the funding account number. The account number will be masked based on the configuration for the buyer. blockPurchases: type: boolean description: Block purchases on the funding account. This field is optional and should be set to ‘false’ if you want to remove the block on Funding PAN and use it for purchases. Valid values are true or false. If this parameter is not specified in the API request, the default value assigned will be true. expirationDate: maxLength: 10 type: string description: Funding Account's expiration date. Will be provided in yyyy-mm-dd format. description: '' examples: Default: summary: Default value: statusDesc: Funding Account has been updated successfully messageId: '1620851509' accountNumber: XXXXXXXXXXXX3252 statusCode: AMUF000 x-codegen-request-body-name: UpdateFundingAccount x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1accountManagement~1fundingAccount~1update/post' default: false x-hideTryIt: true /vpa/v1/accountManagement/getPaymentControls: post: tags: - Account Management service summary: Get Payment Controls description: '' operationId: Get Payment Controls requestBody: description: Get Payment Controls Request content: application/json: schema: required: - accountNumber - buyerId - clientId - messageId type: object properties: buyerId: maxLength: 15 type: string description: Buyer ID numeric is the buyer identifier as defined in Visa Payables Automation system. This is often the ID defined at the processor for the corporate buyer. This will be provided by the issuer. clientId: maxLength: 50 type: string description: ClientID uniquely identifies a financial institution. This will be provided by the Visa implementation team. messageId: maxLength: 36 type: string description: Unique identifier for the API request. accountNumber: maxLength: 16 type: string description: Account Number for which the auth rules are requested. You must send at least the last 4 digits, but can send up to the entire account number. The value sent should uniquely identify the account number. If the last 4 digits are not unique then it will fail examples: Default: summary: Default value: clientId: B2BWS_1_1_9999 messageId: '2017-04-06T03:47:20.000Z' buyerId: 9999 accountNumber: 4111111111111111 required: true responses: '200': description: OK content: application/json: schema: type: object properties: GetPaymentControlsResponse: type: object properties: rules: type: array description: List of authorization rules set on the account. items: type: object properties: ruleCode: maxLength: 8 type: string description: Contains the authorization Rule Code. For the list of valid Visa Payment Controls (VPC) refer to the VPC Rules and Overrides table.
For buyers using VANs please refer to the VPP Rules and Overrides table.
This element is mandatory for action types A (Add) and U (Update). overrides: type: array description: 'Complex element which contains one or more overrides for the authorization rules. This element contains: Sequence, Override Code, and Override Value. Override is nothing but a value which you want to change in the default rule.

For e.g. to set the threshold rule for the account you have requested,if you want to set the threshold as $1000 then you should pass the amount override as 1000 and the currency override as 840.' items: type: object properties: sequence: maxLength: 3 type: string description: Contains the sequence number for the override. Each rule starts with 0 so if you have an SPV and BUS, then SPV will have sequence 0 and BUS will have a 0. If there are multiple fields/overrides within a rule, e.g. SPV. Each override - amount, currency code, range type, etc.- have the same sequence number. E.g. amount, currency code and range type will all have 0. If there is a rule that can have multiple amounts e.g. Exact match, then each VPAS rule overrides must have a unique sequence number so first VPAS has 0, then second has 1, third has 2. overrideCode: maxLength: 33 type: string description: Contains the code for the override.
Note, follow the rule specification (provided in the link in the Rule code field description) as not every ruleCode requires an overrideCode. overrideValue: maxLength: 25 type: string description: Contains the value for the override.
Note, follow the rule specification (provided in the link in the Rule code field description) as not every ruleCode requires an overrideValue. messageId: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: maxLength: 10 type: string description: Status code of the response. It is alphanumeric. The values are specific to each method. The list of status codes can be found in the following link statusDesc: maxLength: 255 type: string description: Status description of the response. description: Success examples: Default: summary: Default value: statusDesc: Payment control details retrieved successfully. messageId: '1591133872' rules: - ruleCode: ADT - ruleCode: AIR - ruleCode: ATM - ruleCode: ATML overrides: - sequence: '0' overrideCode: amountValue parentOverrideCode: amountOverride overrideValue: '1' - sequence: '0' overrideCode: amountCurrencyCode parentOverrideCode: amountOverride overrideValue: '840' - ruleCode: AUTO - ruleCode: BUS overrides: - sequence: '0' overrideCode: timezone overrideValue: Alaskan Standard Time - sequence: '0' overrideCode: weekDayEffective parentOverrideCode: timeRange overrideValue: SUN - sequence: '0' overrideCode: timeEffectiveStart parentOverrideCode: timeRange overrideValue: 01:00 - sequence: '0' overrideCode: timeEffectiveEnd parentOverrideCode: timeRange overrideValue: '15:00' - ruleCode: CAID overrides: - sequence: '0' overrideCode: CAIDValue parentOverrideCode: CAIDOverride overrideValue: '847833' - ruleCode: CLOTH - ruleCode: ECOM - ruleCode: FUEL - ruleCode: GTM - ruleCode: HOT - ruleCode: NOTFUEL - ruleCode: VPAS overrides: - sequence: '0' overrideCode: amountValue parentOverrideCode: amountOverride overrideValue: '1.00' - sequence: '0' overrideCode: amountCurrencyCode parentOverrideCode: amountOverride overrideValue: '840' - ruleCode: XBR - ruleCode: XBRX overrides: - sequence: '0' overrideCode: jurisdictionMerchantCountry parentOverrideCode: countries overrideValue: '124' statusCode: AMGP000 '400': description: In case of error please refer to the Error Codes page for this api content: application/json: schema: type: object properties: errors: type: array description: array of errors items: type: object properties: code: type: string description: error code statusDesc: type: string description: error description messageId: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: maxLength: 6 type: string description: Status code of the response. statusDesc: maxLength: 255 type: string description: Status description of the response. x-codegen-request-body-name: GetPaymentControls x-hideTryIt: true /vpa/v1/accountManagement/fundingAccount/create: post: tags: - Account Management service summary: Add Funding Account description: '' operationId: Add Funding Account requestBody: content: application/json: schema: required: - accountNumber - buyerId - clientId - currencyCode - messageId type: object properties: buyerId: maxLength: 25 type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation. This will be provided by the Issuer. Value should must be numeric. clientId: maxLength: 50 type: string description: ClientID uniquely identifies a financial institution. This will be provided by Visa implementation team. messageId: maxLength: 36 type: string description: Unique identifier for identifying the request. Each request sent to VPA requires its own unique ID. creditLimit: type: integer description: Denotes the credit limit of the funding account. This field is required if processor integration is disabled for the buyer. If buyer is processor integrated, this value should not be provided because the credit limit will be pulled directly from the processor. currencyCode: maxLength: 3 type: string description: Denotes the ISO 3-character alpha code of the billing currency for the funding account number (e.g. USD) accountNumber: type: integer description: Denotes the full 16 digit funding account number. Should be a valid card account number blockPurchases: type: boolean description: Ability to Block or allow purchases on the funding account. This field is optional and if not provided will be set to ‘true’ and will prevent any purchases from being made on the funding PAN/ funding account. This should be set to ‘false’ if you want to remove the block on the Funding PAN/funding account and allow it to be used for purchases. This is an optional field. Valid values are true or false. defaultAccount: type: boolean description: Denotes if this funding account should be designated as the default funding account. If this field is not provided, the system defaults the first funding account that is added to this buyer as the default funding account. expirationDate: maxLength: 10 type: string description: Expiration date of the funding account. This field is required if processor integration is disabled for the buyer. If buyer is processor integrated, this value should not be provided because the credit limit will be pulled directly from the processor. Should be provided in yyyy-mm-dd format. Always provide the last day of the month for dd. The system will set the last day of the month even if you provide a different day. examples: Default: summary: Default value: clientId: B2BWS_FDR_5126 blockPurchases: false messageId: '{{$timestamp}}' defaultAccount: 'true' buyerId: '107777' accountNumber: 4807330007183252 currencyCode: USD required: true responses: '201': description: Created content: application/json: schema: type: object properties: AddFundingAccountResponse: type: object properties: errors: type: array description: In case of error please refer to the Error Codes page for this api items: type: object properties: Error: required: - code - statusDesc type: object properties: code: type: string description: error code statusDesc: type: string description: error description messageId: maxLength: 36 type: string description: Unique identifier which was sent in the request. statusCode: type: string description: Status code of the response. statusDesc: type: string description: Status description of the response. accountNumber: type: integer description: Denotes the funding account number. The account number will be masked based on the configuration for the buyer. blockPurchases: type: boolean description: Block purchases on the funding account. This field is optional and should be set to ‘false’ if you want to remove the block on Funding PAN and use it for purchases. Valid values are true or false. If this parameter is not specified in the API request, the default value assigned will be true. expirationDate: maxLength: 10 type: string description: Funding Account's expiration date. Will be provided in yyyy-mm-dd format. description: '' examples: Default: summary: Default value: statusDesc: Funding Account has been created successfully messageId: '1620851268' accountNumber: XXXXXXXXXXXX3252 statusCode: AMCF000 expirationDate: '2023-05-01' x-codegen-request-body-name: AddFundingAccount x-operationVersions: - label: v1 operationPointer: '#/paths/~1vpa~1v1~1accountManagement~1fundingAccount~1create/post' default: false x-hideTryIt: true x-tagGroups: - name: API Reference tags: - Foreign Exchange Rates API