openapi: 3.0.1 info: title: Foreign Exchange Rates Workflows API description: Workflows version: '1' servers: - url: https://sandbox.api.visa.com description: Sandbox server security: [] tags: - name: Workflows description: Workflows paths: /pop/v1/hcs/healthCheckService: post: tags: - Workflows summary: Health Check Service description: API for checking Health Check of the Application operationId: healthCheck requestBody: content: application/json: schema: type: object responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ApiDetailList' '400': description: Bad Request servers: - url: http://health-check-qa1.oce-np-sm-dpd-b-en.trusted.visa.com description: Generated server url x-operationVersions: - label: v1 - Latest operationPointer: '#/paths/~1pop~1v1~1hcs~1healthCheckService/post' default: false x-hideTryIt: true /pop/v1/recipes/Payment: post: tags: - Workflows summary: Payments Recipe description: Composite API which handles process, resend and cancel payments. operationId: recipes-payments parameters: - name: X-Payment-Action-Type in: header description: Describes what payment action is to be performed. It can be process, resend or cancel required: true explode: false schema: type: string enum: - process - cancel - resend - name: X-IPaaS in: header description: Describes what iPaaS is the source system for this request required: true explode: false schema: type: string requestBody: description: "Based on X-Payment-Action-Type Header, it can be - \r\n1. process - Process Payment Request\r\n2. resend - Resend Payment Request\r\n3. cancel - Cancel Payment Request" content: application/json: schema: description: "Based on X-Payment-Action-Type Header, it can be -\r\n1. process \r\n2. resend \r\n3. cancel" oneOf: - $ref: '#/components/schemas/ProcessPaymentRequest' - $ref: '#/components/schemas/ResendPaymentRequest' - $ref: '#/components/schemas/CancelPaymentRequest' responses: '201': description: Created content: application/json: schema: oneOf: - $ref: '#/components/schemas/ProcessPaymentResponse' - $ref: '#/components/schemas/CancelPaymentResponse' - $ref: '#/components/schemas/ResendPaymentResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/POPErrorResponse' examples: POP Error Response: value: messageId: string statusCode: 0 errorResponse: errorItems: - errorCode: string errorDescription: string statusDescription: string x-operationVersions: - label: v1 - Latest operationPointer: '#/paths/~1pop~1v1~1recipes~1Payment/post' default: false x-hideTryIt: true /pop/v1/recipes/getPaymentDetails: post: tags: - Workflows summary: Get Payment Details - Recipe description: GetPaymentDetails Recipe API operationId: getPaymentDetails parameters: - name: X-IPaaS in: header description: Describes what iPaaS is the source system for this request required: true explode: false schema: type: string requestBody: description: Get Payment details request payload content: application/json: schema: $ref: '#/components/schemas/GetPaymentDetailsRequest' examples: Get Payment Details - Recipe: summary: Get Payment Details - Recipe value: fromDate: '' toDate: '' corporate_internal_id: 1-2-3029-11181 resultSetNo: '1' buyerId: 11181 trackingNumber: 1691683534 status: A responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/GetPaymentDetailsResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/POPErrorResponse-1' '401': description: Unauthorized '403': description: Forbidden '404': description: Not Found x-operationVersions: - label: v1 - Latest operationPointer: '#/paths/~1pop~1v1~1recipes~1getPaymentDetails/post' default: false x-hideTryIt: true /pop/v1/register/client: post: tags: - Workflows summary: Client Registration description: This endpoint is used to enable auth for the client requestBody: description: Onboarding Request content: application/json: schema: $ref: '#/components/schemas/OnboardingRequest' examples: Client registration Payload: summary: Client registration Payload value: issuerId: 1-1-1940 accountingSoftware: QBO messageId: '12121' buyerId: '111812' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/OnboardingResponse' '400': description: Bad Request content: application/json: schema: type: object properties: messageId: type: string errorMessage: type: string x-operationVersions: - label: v1 - Latest operationPointer: '#/paths/~1pop~1v1~1register~1client/post' default: false x-hideTryIt: true /pop/v1/notification/generate: post: tags: - Workflows summary: Generate Notification description: Generate notification operationId: notification-generate requestBody: description: Notification Request content: application/json: schema: $ref: '#/components/schemas/NotificationRequest' required: true responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/NotificationResponse' '400': description: Bad Request content: application/json: schema: $ref: '#/components/schemas/NotificationErrorResponse' examples: Example 1: value: messageId: string statusCode: 0 errorResponse: errorItems: - errorCode: string errorDescription: string statusDescription: string servers: - url: https://api-orchestration-qa.oce-np-sm-dpd-b-en.trusted.visa.com description: QA x-operationVersions: - label: v1 - Latest operationPointer: '#/paths/~1pop~1v1~1notification~1generate/post' default: false x-hideTryIt: true components: schemas: ProcessPaymentRequest: title: ProcessPaymentRequest required: - accountingSoftware - accountingSoftwareEntityId - actionType - buyerId - issuerId - messageId - payment type: object properties: buyerId: type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation. payment: $ref: '#/components/schemas/Payment' issuerId: type: string description: A '-' (hyphen) separated field which contains the region id, processor id and bank id clientKey: type: string description: Client key for secure communication messageId: type: string description: Unique ID specific to this API call. actionType: type: string description: "Type of payment processing. \r\n 1 - Payment Instruction \r\n 2 - Payment Requisition" codeChallenge: type: string description: Code challenge for secure communication accountingSoftware: type: string description: Name/Initials of the accounting software used. enum: - QBO paymentDescription: type: string description: Description of the payment. accountingSoftwareEntityId: type: string description: Unique ID of that particular accounting software entity example: bill Id with respect to QuickBooks Online(QBO) description: Process Payment Request Schema Payment: required: - currencyCode - paymentGrossAmount type: object properties: invoices: type: array description: This complex element contains the details about the invoice associated with the payment. items: $ref: '#/components/schemas/Invoices' supplier: $ref: '#/components/schemas/Supplier' accountType: type: string description: "Account Type. Valid values are-
\r\n 1- Lodged Adjustable Limit account
\r\n 2- Lodged account.
\r\n Note- This field is required only if the account is a new account which is not already lodged to the supplier for which the payment is made." paymentType: type: string description: Payment type. Valid values are
CCC - Credit Card Payment
STP - Straight Through Processing payment accountLimit: type: string description: Credit limit of the account.
Note- This field is required only if the account is a new account which is not already lodged to the supplier for which the payment is made. currencyCode: type: string description: Payment Currency Code. A valid ISO alpha currency code should be passed. If the currency passed is not one of the supported currencies setup in the buyer profile, the payment will be rejected. accountNumber: type: string description: "Account number can be an existing Visa account, a new account in the VPA system, or a proxy number. If this column is blank, the following logic is used for determining the account number
\r\n\r\n 1. Lodged account is used if there is one for the supplier.
\r\n\r\n 2. If the supplier does not have a lodged card account, system should\r\npick the card account from the pool based on the matrix in Account Picking logic table." paymentExpiryDate: type: string description: The date by which a supplier must collect a payment. Format is YYYY-MM-DD. paymentGrossAmount: type: string description: Payment gross amount. Format is 99999999999999.99 paymentRequestDate: type: string description: Payment requested date. If this field is blank, system will set the current date as the payment request date.Format is YYYY-MM-DD. cardAccountExpiryDate: type: string description: The expiry date for the card account description: Payment Class ResendPaymentRequest: title: ResendPaymentRequest required: - accountingSoftwareEntityId - buyerId - issuerId - messageId - vendorId type: object properties: buyerId: type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation. Value format is 09. issuerId: type: string description: A '-' (hyphen) separated field which contains the region id, processor id and bank id vendorId: type: string description: Identifier used by the buyer to identify the vendor. This is the vendor id of the vendor whose payment is being modified. clientKey: type: string description: Client key for secure communication messageId: type: string description: Unique ID specific to this API call. emailNotes: type: string description: Extra notes for the email address accountNumber: type: string description: An existing Visa card account. Values are 09. Note- If the account number is passed, it should correspond to the card account number used for the payment. codeChallenge: type: string description: Code Challenge for secure communication expirationDate: type: string description: The date by which a supplier must collect his payment. Format is YYYY-MM-DD primaryEmailAddress: type: string description: This contains the email address for the supplier that will receive the payment instruction. It must be a valid email address. If the primary email address is provided, the payment advice will be sent to the new primary email address provided in the request. If it is not, the email address in the original request will be used. alternateEmailAddresses: type: array description: This complex element will contain up to five alternate email addresses. items: $ref: '#/components/schemas/AlternateEmailAddress' accountingSoftwareEntityId: type: string description: Unique ID used by that particular accounting software entity example: bill Id with respect to QuickBooks Online(QBO) supplierProfileUpdateIndicator: type: string description: This field contains value as Y if supplier profile has to be updated and N if supplier profile should not be updated. By default, the system will not update the supplier profile with the new values sent in the request. description: Resend payment request payload ResendPaymentResponse: title: ResendPaymentResponse required: - messageId - statusCode - statusDesc type: object properties: messageId: type: string description: Unique identifier which was sent in the request. statusCode: type: string description: Status code of the response. It is alphanumeric. The values are specific to each method. For the details of the various error codes returned for this method refer to the "Error Codes" table. statusDesc: type: string description: Status description of the response. description: Resend Payment Response Schema Recipients: type: object properties: sms: type: array description: List of phone numbers items: type: string description: Phone number value email: type: array description: List of email recipients items: type: string description: Email address value description: Recipients of the Notification AlternateEmailAddress: type: object properties: alternateEmailAddress: type: string OnboardingResponse: type: object properties: clientKey: type: string description: Client key for secure communication messageId: type: string description: Unique identifier for the message errorMessage: type: string description: Error message, if any codeChallenge: type: string description: Code Challenge for secure communication NotificationRequest: required: - buyerId - issuerId - messageId - notificationType - productName type: object properties: source: type: string description: Value to identify from where this API request is originated buyerId: maxLength: 25 pattern: ^[0-9]*$ type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation. issuerId: type: string description: A '-' (hyphen) separated field which contains the region id, processor id and bank id language: type: string description: Language in which the Notification to be sent priority: type: string description: Priority to be set for this Notification (high, low or medium) schedule: $ref: '#/components/schemas/Schedule' messageId: maxLength: 36 pattern: ^[a-zA-Z0-9]*$ type: string description: Unique identifier specific for this API request parameters: type: object additionalProperties: type: string description: Key value property pairs description: Additional Key value pairs to be sent as placeholder for Notification Templates recipients: $ref: '#/components/schemas/Recipients' templateId: type: string description: Template id selected based on Notification Type productName: type: string description: Product name value to identify the Notification Request notificationType: type: string description: Type of the Notification to be sent notificationStatus: type: string description: Used to do Lifecycle management of Notification Request description: Notification Generation Request GetPaymentDetailsResponse: type: object properties: payments: type: object properties: invoices: type: array items: type: object properties: invoiceDate: type: string invoiceAmount: type: integer invoiceNumber: type: string purchaseOrderDate: type: string purchaseOrderNumber: type: string partialPaymentIndicator: type: string supplier: type: object properties: supplierID: type: string supplierName: type: string primaryEmailAddress: type: string alternateEmailAddresses: type: array items: type: object properties: localAlternateEmailAddress: type: string paymentType: type: string currencyCode: type: string accountNumber: type: string manualMatchStatus: type: string paymentExpiryDate: type: string systemMatchStatus: type: string paymentDescription: type: string paymentGrossAmount: type: string paymentRequestDate: type: string messageId: type: string statusCode: type: string statusDesc: type: string resultSetNo: type: string hasMoreElements: type: string totalRecordCount: type: string x-examples: Example 1: payments: invoices: - invoiceDate: string invoiceAmount: 0 invoiceNumber: string purchaseOrderDate: string purchaseOrderNumber: string partialPaymentIndicator: str supplier: supplierID: string supplierName: string primaryEmailAddress: string alternateEmailAddresses: - localAlternateEmailAddress: string paymentType: s currencyCode: str accountNumber: string manualMatchStatus: string paymentExpiryDate: string systemMatchStatus: string paymentDescription: string paymentGrossAmount: string paymentRequestDate: string messageId: string statusCode: string statusDesc: string resultSetNo: str hasMoreElements: s totalRecordCount: string Schedule: type: object properties: frequencyType: type: string description: Frequency of the notification to be scheduled recursively scheduledTime: type: string description: Notification schedule time to send a notification GetPaymentDetailsRequest: required: - buyerId - issuerId - messageId type: object properties: status: type: string description: Status of payment. If you would like to get the details of payments in a particular status, you can pass it in this field. The status will be used along with the date range filter if specified to get the payments.
Valid values are M-Matched, U- UnMatched, R-Rejected, E-Expired, O-Error, A-All, C-Canceled. toDate: type: string description: Specifies the end of date range. Format is MMDDYYYY buyerId: type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation. Value format is 09. fromDate: type: string description: Specifies the beginning of date range for which the payment details is requested. Format is MMDDYYYY. If "FromDate" and "ToDate" is not provided, the system will retrieve the last 9 months data.

Note- The system retrieves only last 250 payments made during the specified date range sent in the initial request. User can make subsequent calls to retrieve additional data. issuerId: type: string description: A '-' (hyphen) separated field which contains the region id, processor id and bank id clientKey: type: string description: Client key for secure communication messageId: type: string description: Unique ID specific to this API call. resultSetNo: type: string description: Result Set Number. codeChallenge: type: string description: Code Challenge for secure communication trackingNumber: type: string description: The MessageID of the original process payment request for which the payment is needed. description: Get payment details request payload ErrorItem-2: type: object properties: errorCode: type: string description: POP Notification Error Code errorDescription: type: string description: POP Notification Error Description POPErrorResponse-1: title: POPErrorResponse required: - errorResponse - messageId - statusCode type: object properties: messageId: type: string description: Unique ID specific to this API call. statusCode: type: integer description: HTTP Error status code errorResponse: $ref: '#/components/schemas/ErrorResponse-1' statusDescription: type: string description: HTTP Error status description description: Error Response for POP APIs ErrorResponse-1: type: object properties: errorItems: type: array description: list of errored items items: $ref: '#/components/schemas/ErrorItem-1' description: Error Response Schema CancelPaymentResponse: title: CancelPaymentResponse required: - grossAmount - messageId - statusCode - statusDesc - supplierName type: object properties: messageId: type: string description: Unique identifier which was sent in the request. statusCode: type: string description: Status code of the response. It is alphanumeric. The values are specific to each method. For the details of the various error codes returned for this method refer to the "Error Codes" table statusDesc: type: string description: Status description of the response. supplierId: type: string description: Identifier used by the buyer to identify the supplier. This is the supplier id of the supplier whose payment is being canceled. grossAmount: type: string description: Contains the payment gross amount of the payment being cancelled supplierName: type: string description: Name of supplier whose payment is being canceled. description: Cancel Payment Response Schema NotificationResponse: title: NotificationResponse type: object properties: messageId: type: string description: Unique identifier which was sent in the request statusCode: type: integer description: HTTP Success status code statusDescription: type: string description: Success Message description description: Notification Generation Response Schema CancelPaymentRequest: title: CancelPaymentRequest required: - accountingSoftwareEntityId - buyerId - issuerId - messageId - vendorId type: object properties: buyerId: type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation. Value format is 09. issuerId: type: string description: A '-' (hyphen) separated field which contains the region id, processor id and bank id vendorId: type: string description: Identifier used by the buyer to identify the vendor. This is the vendor id of the vendor whose payment is being canceled. clientKey: type: string description: Client key for secure communication messageId: type: string description: Unique ID specific to this API call. cancelReason: type: string description: Contains the reason for canceling the payment. accountNumber: type: string description: An existing Visa card account. Values are 09. Note- If the account number is passed, it should correspond to the card account number used for the payment. codeChallenge: type: string description: Code Challenge for secure communication accountingSoftwareEntityId: type: string description: Unique ID used by that particular accounting software entity example: bill Id with respect to QuickBooks Online(QBO) description: Cancel payment request payload Invoices: type: object properties: invoiceDate: type: string description: This contains the date of the invoice being paid. Format is MM/DD/YY. invoiceAmount: type: string description: Invoice amount. maximum length is 16. Maximum number of decimals is two. Format is XXXXXXXXXX9999.99 invoiceNumber: type: string description: Invoice Number. purchaseOrderDate: type: string description: This contains the date on which the purchase order was created. Format is MM/DD/YY. purchaseOrderNumber: type: string description: This contains the purchase order number associated with the invoice. OnboardingRequest: required: - accountingSoftware - buyerId - issuerId - messageId type: object properties: buyerId: maxLength: 25 type: string description: Buyer ID is the buyer identifier as defined in Visa Payables Automation. Value format is 09. issuerId: type: string description: A '-' (hyphen) separated field which contains the region id, processor id and bank id messageId: maxLength: 36 type: string description: Unique identifier for the message accountingSoftware: type: string description: Name of the accounting software ErrorItem-1: type: object properties: errorCode: type: string description: POP Error Code errorDescription: type: string description: POP Error Description NotificationErrorResponse: title: NotificationErrorResponse type: object properties: messageId: type: string description: Unique identifier which was sent in the request statusCode: type: integer description: HTTP Error status code errorResponse: $ref: '#/components/schemas/ErrorResponse-3' statusDescription: type: string description: HTTP Error status description description: Notification Generation Error Response Schema ProcessPaymentResponse: title: ProcessPaymentResponse required: - expirationDate - messageId - statusCode - statusDesc type: object properties: messageId: type: string description: Unique identifier which was sent in the request statusCode: type: string description: Status code of the response. It is alphanumeric. The values are specific to each method. For the details of the various error code returned for this method refer to the "Error Codes" table below. statusDesc: type: string description: Status description of the response. accountNumber: type: string description: Account number used for processing the payment. The account number will be masked in the response if the corresponding Client ID is configured to be masked. expirationDate: type: string description: The date the card account expires. Format is MM/YYYY Note- The card account expiration date is sent for all Payment Requisitions and Single Use Account payments. description: Process Payment Response Schema ErrorResponse-3: type: object properties: errorItems: type: array description: list of errored items items: $ref: '#/components/schemas/ErrorItem-2' description: Error Response Schema POPErrorResponse: title: POPErrorResponse required: - errorResponse - messageId - statusCode type: object properties: messageId: type: string description: Unique ID specific to this API call. statusCode: type: integer description: HTTP Error status code errorResponse: $ref: '#/components/schemas/ErrorResponse-1' statusDescription: type: string description: HTTP Error status description description: Error Response for POP APIs ApiDetailList: required: - description - overallStatus type: object properties: description: type: string description: Gives the current status of the POP application endpoints in OCC or OCE example: All services are up and running overallStatus: type: string description: Gives the status as UP or DOWN based on the services status for the 2 datacentres example: UP, DOWN Supplier: required: - supplierID - supplierName type: object properties: emailNotes: type: string description: This contains the text to be included on email notifications and remittance advice. supplierID: type: string description: Identifier used by the buyer to identify the supplier. This has to be unique for a buyer. It cannot contain spaces. supplierCity: type: string description: Supplier city. supplierName: type: string description: Name of supplier to be paid. It is mandatory for new suppliers. supplierState: type: string description: Supplier state. supplierPostalCode: type: string description: Supplier postal code. It is mandatory for new suppliers and only if the country mandates it. primaryEmailAddress: type: string description: Email address supplierCountryCode: type: string description: Supplier country code. It is alphanumeric. VPA supports all ISO alphanumeric country code.For example- USA. supplierAddressLine1: type: string description: Supplier address line 1. supplierAddressLine2: type: string description: Supplier address line 2. alternateEmailAddresses: type: array description: This complex element can have up to five alternate email addresses. items: $ref: '#/components/schemas/AlternateEmailAddress' description: Supplier Class x-tagGroups: - name: API Reference tags: - Foreign Exchange Rates API