openapi: 3.2.0 info: version: '2.0' title: Transaction Management Endpoints API description: The Transaction Management API allows you to manage transactions in your account. You can cancel transactions, refund transactions, and confirm flagged transactions. contact: name: API Support email: help@vopay.com servers: - url: https://earthnode-dev.vopay.com/api/v2 tags: - name: Transaction Management Endpoints paths: /account/transaction/resubmit: post: description: 'This endpoint creates a new transaction from an existing one, reusing the original recipient and bank account details. It is useful for retrying a failed or returned transaction without re-entering the payment information. By default the new transaction is created on the same payment rail as the original. To resubmit on a different rail, supply the optional PaymentRail parameter (for example, resubmitting a returned EFT withdrawal as ACH). The target rail must be supported for the transaction''s direction (funding vs. withdrawal) and the bank account on file must contain the routing details that rail requires (an ABA routing number for ACH/RTP/FedNow/Fedwire, or a financial institution and branch transit number for EFT). A new idempotency key is generated for the resubmitted transaction, so it is treated as a distinct transaction from the original. The original transaction is left unchanged. This endpoint must be enabled on your account before it can be used; contact the VoPay business team to request access.' summary: account/transaction/resubmit tags: - Transaction Management Endpoints operationId: AccountTransactionResubmitPost deprecated: false requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: AccountID: description: Your account ID type: string Key: description: API key for the account type: string Signature: description: Hashed signature for the request type: string TransactionID: description: The unique ID of the original transaction to resubmit type: integer PaymentRail: description: Optional. The payment rail to resubmit the transaction on. Defaults to the original transaction's rail. Case-insensitive. type: string enum: - eft - ach - rtp - fednow - fedwire required: - AccountID - Key - Signature - TransactionID required: true responses: '200': description: '' content: application/json: schema: type: object required: - Success - ErrorMessage - TransactionID - PaymentRail properties: Success: type: boolean description: True if the request was successful, false if it failed example: true ErrorMessage: type: string description: Contains a description of the error if the request failed example: '' TransactionID: type: integer description: The unique ID of the newly created (resubmitted) transaction example: '1125' PaymentRail: type: string description: The payment rail the new transaction was created on example: ach /account/transactions/cancel: post: description: 'This endpoint allows a recently created transaction to be cancelled. Once a transaction has begun being processed it can no longer be canceled through this endpoint. Paylink can also be cancelled using this endpoint and can only be cancelled if it is in a pending status. Once the paylink is cancelled successfully, the cancellation email will be sent to the recipient as a cancellation confirmation.' summary: account/transactions/cancel tags: - Transaction Management Endpoints operationId: AccountTransactionsCancelPost deprecated: false requestBody: $ref: '#/components/requestBodies/AccountTransactionsCancelPost' responses: '200': description: '' content: application/json: schema: type: object required: - Success - ErrorMessage - TransactionID - TransactionStatus - Timestamp properties: Success: type: boolean description: True if the request was successful, false if it failed example: true ErrorMessage: type: string description: Contains a description of the error if the request failed example: '' TransactionID: type: integer description: The unique ID for the transaction example: '1124' TransactionStatus: type: string description: A message indicating the current transaction status - cancelled example: cancelled Timestamp: type: string format: date-time description: The timestamp when the transaction status was last modified example: '2019-11-26 12:00:00' /account/transactions/refund: post: description: This endpoint allows you to refund a completed transaction (EFT, ACH, Interac, and credit card). The payment information provided in the original transaction is used in the refund. summary: account/transactions/refund tags: - Transaction Management Endpoints operationId: AccountTransactionsRefundPost deprecated: false requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: AccountID: description: Your account ID type: string Key: description: API key for the account type: string Signature: description: Hashed signature for the request type: string TransactionID: description: The unique ID for the transaction you want to refund type: integer Amount: description: The amount to refund. Value must be equal to or less than the original transaction amount. If no amount is provided, the full amount from the original transaction is used. type: number Notes: description: Optional notes to attach to the refund transaction type: string required: - AccountID - Key - Signature - TransactionID required: true responses: '200': description: '' content: application/json: schema: type: object required: - Success - ErrorMessage - TransactionID properties: Success: type: boolean description: True if the request was successful, false if it failed example: true ErrorMessage: type: string description: Contains a description of the error if the request failed example: '' TransactionID: type: integer description: The unique ID for the refund transaction example: '1124' InteracQuestionAnswer: type: string description: The unique answer to the Interac question. Only applicable if refunding an Interac Money Request transaction. example: 9sdai873rb x-absent-when: transaction is not an Interac bulk payout /account/transaction/return: post: description: This endpoint allows you to return a transaction. A return can be initiated for EFT and ACH transactions that need to be returned (e.g., insufficient funds, account closed, or invalid account). The original transaction must be in a completed state to be returned. summary: account/transaction/return tags: - Transaction Management Endpoints operationId: AccountTransactionReturnPost deprecated: false requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: AccountID: description: Your account ID type: string Key: description: API key for the account type: string Signature: description: Hashed signature for the request type: string TransactionID: description: The unique ID for the transaction to be returned type: integer ReturnReason: description: The reason for returning the transaction (e.g., insufficient funds, account closed) type: string required: - AccountID - Key - Signature - TransactionID required: true responses: '200': description: '' content: application/json: schema: type: object required: - Success - ErrorMessage - TransactionID properties: Success: type: boolean description: True if the request was successful, false if it failed example: true ErrorMessage: type: string description: Contains a description of the error if the request failed example: '' TransactionID: type: integer description: The unique ID for the return transaction example: '1124' TransactionStatus: type: string description: A message indicating the current transaction status example: returned x-absent-when: always; the route emits ReversalTransactionID instead of TransactionStatus (spec drift) /account/transaction/confirm: post: description: This endpoint allows users to confirm a flagged transaction. Confirming a flagged transaction permits the transaction to be processed. Unconfirmed flagged transactions will not be processed. summary: account/transaction/confirm tags: - Transaction Management Endpoints operationId: AccountTransactionConfirmPost deprecated: false requestBody: $ref: '#/components/requestBodies/AccountTransactionsCancelPost' responses: '200': description: '' content: application/json: schema: type: object required: - Success - ErrorMessage - TransactionID - TransactionConfirmed properties: Success: type: boolean description: True if the request was successful, false if it failed example: true ErrorMessage: type: string description: Contains a description of the error if the request failed example: '' TransactionID: type: integer description: The unique ID for the transaction example: '1124' TransactionConfirmed: type: boolean description: Confirmed status of the transaction example: true /account/transaction/hold: post: description: This endpoint creates a hold on funds in your account. The held amount is reserved and will not be available for other transactions until the hold is released or the hold transaction is cancelled. summary: account/transaction/hold tags: - Transaction Management Endpoints operationId: AccountTransactionHoldPost deprecated: false requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: AccountID: description: Your account ID type: string Key: description: API key for the account type: string Signature: description: Hashed signature for the request type: string Amount: description: The amount to place on hold. Must be greater than 0 type: number Currency: description: The currency of the hold amount. Defaults to the account's default currency if not provided type: string ClientAccountID: description: The ID of the client account to associate with this hold type: string Notes: description: Optional notes to attach to the hold transaction type: string ClientReferenceNumber: description: An optional reference number from the client to associate with the hold transaction type: string required: - AccountID - Key - Signature - Amount required: true responses: '200': description: '' content: application/json: schema: type: object required: - Success - ErrorMessage - TransactionID properties: Success: type: boolean description: True if the request was successful, false if it failed example: true ErrorMessage: type: string description: Contains a description of the error if the request failed example: '' TransactionID: type: integer description: The unique ID for the hold transaction example: '1124' /account/transaction/hold/release: post: description: This endpoint releases an existing hold transaction, making the previously held funds available again. The hold must be in a pending status to be released. summary: account/transaction/hold/release tags: - Transaction Management Endpoints operationId: AccountTransactionHoldReleasePost deprecated: false requestBody: content: application/x-www-form-urlencoded: schema: type: object properties: AccountID: description: Your account ID type: string Key: description: API key for the account type: string Signature: description: Hashed signature for the request type: string TransactionID: description: The unique ID of the hold transaction to release type: integer required: - AccountID - Key - Signature - TransactionID required: true responses: '200': description: '' content: application/json: schema: type: object required: - Success - ErrorMessage - TransactionID properties: Success: type: boolean description: True if the request was successful, false if it failed example: true ErrorMessage: type: string description: Contains a description of the error if the request failed example: '' TransactionID: type: integer description: The unique ID for the released hold transaction example: '1124' components: requestBodies: AccountTransactionsCancelPost: content: application/x-www-form-urlencoded: schema: type: object properties: AccountID: description: Your account ID type: string Key: description: API key for the account type: string Signature: description: Hashed signature for the request type: string TransactionID: description: The unique ID for the transaction type: integer required: - AccountID - Key - Signature - TransactionID required: true