[In Development]
This is an unofficial library to leverage VoPay REST API(s) for payment solutions.
npm i vopay-node
or
yarn add vopay-node
You will be needed to create a VoPay instance with the details provided by VoPay team. Things you will need for the instance:
Name |
---|
AccountID |
ApiKey |
ApiSecret |
const VoPay = require('vopay-node')
let VoPayClient = new VoPay({
AccountID: "YOUR_ACCOUNT_ID",
ApiKey: "YOUR_API_KEY",
ApiSecret: "YOUR_API_SECRET"
})
vopay-node
uses axios as HTTP client.
// USING PROMISES
VoPayClient.iq11.generateEmbedURL({
RedirectURL: "https://redirect.com/page?Token=1234"
})
.then(response => console.log(response))
.catch((error) => {
console.log(error);
});
// USING ASYNC/AWAIT
const loadEmbedUrl = async () => {
try {
const embedUrl = await VoPayClient.iq11.generateEmbedURL({
RedirectURL: "https://redirect.com/page?Token=1234"
})
console.log(embedUrl);
} catch(error) {
console.log(error);
}
}
All methods return a Promise.
In cases where you are needed to provide
AccountID
,Key
andSignature
. you can avoid adding that, since the library instance is already having them after you initialized it.
Partner - Official Docs
Create User Account - Official Docs
This endpoint is used to create a VoPay account. You will need to sign-up as a partner account in order to use this endpoint and start creating VoPay accounts for your users.
This Endpoint does not mark the account as active, you will need to submit the rest of the required information in the POST /account/submit-extended-info endpoint
// Check Official Docs for more fields
const { Success, ErrorMessage, AccountID, APISharedSecret, APIKey } = await VoPayClient.partner.createUserAccount({
Name: "{Name}",
ClientAccountEnabled: "{ClientAccountEnabled}",
EmailAddress: "{EmailAddress}",
})
Get a list of User Accounts - Official Docs
This endpoint is used to get a list of accounts created using a partner account. It will return the accounts data including shareholder, signing authority and balance information
// Check Official Docs for more fields
const { Success, ErrorMessage, PartnerAccount, Accounts } = await VoPayClient.partner.accountLists()
IQ11 - Official Docs
Generate Embed URL - Official Docs
// Check Official Docs for more fields
const { EmbedURL, Success, ErrorMessage } = await VoPayClient.iq11.generateEmbedURL({
RedirectURL: "https://redirect.com/page?Token=1234"
})
Token Info - Official Docs
// Check Official Docs for more fields in response
const { MaskedAccount, Success, ErrorMessage, BankName } = await VoPayClient.iq11.tokenInfo({
Token: "IQ11_TOKEN"
})
Tokenize - Official docs
// Check Official Docs for more fields in response
const { Token, Success, ErrorMessage } = await VoPayClient.iq11.tokenize()
Account - Official Docs
Get Account Balance - Official Docs
// Check Official Docs for more fields in response
const { AccountBalance, Success, ErrorMessage } = await VoPayClient.account.balance({
Currency: "{Currency}"
})
Get Account Transactions - Official Docs
// Check Official Docs for more fields in response
const { Transactions, Success, ErrorMessage, NumberOfRecords } = await VoPayClient.account.transactions({
StartDateTime: "{StartDateTime}",
EndDateTime: "{EndDateTime}",
Currency: "{Currency}",
TransactionType: "{TransactionType}",
TransactionID: "{TransactionID}",
ClientReferenceNumber: "{ClientReferenceNumber}",
ScheduledTransactionID: "{ScheduledTransactionID}",
PayLinkStatus: "{PayLinkStatus}"
})
Cancel Transaction - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage, TransactionID, TransactionStatus } = await VoPayClient.account.cancelTransaction({
TransactionID: "{TransactionID}"
})
Set Webhook URL - Official Docs
The purpose of the webhook URL is to notify users of any changes in transaction status.
// Check Official Docs for more fields in response
const { Success, ErrorMessage } = await VoPayClient.account.setWebhookURL({
WebHookUrl: "{WebHookUrl}",
Disabled: "{Disabled}"
})
Get Webhook URL - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage, WebHookURL } = await VoPayClient.account.getWebhookURL()
Test Webhook URL - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage } = await VoPayClient.account.testWebhookURL()
Transfer funds to another VoPay Account - Official Docs
This method allows you to transfer funds between VoPay accounts.
// Check Official Docs for more fields in response
const { Success, ErrorMessage, TransactionID } = await VoPayClient.account.transferAccountFundsTo({
Amount: "{Amount}",
Currency: "{Currency}",
RecipientAccountID: "{RecipientAccountID}",
ClientReferenceNumber: "{ClientReferenceNumber}",
Notes: "{Notes}",
ParentTransactionID: "{ParentTransactionID}",
IdempotencyKey: "{IdempotencyKey}"
})
Transfer funds from another VoPay Account to your VoPay Account - Official Docs
This method allows you to transfer funds from a pre-authorized VoPay account to your VoPay account.
// Check Official Docs for more fields in response
const { Success, ErrorMessage, TransactionID } = await VoPayClient.account.transferAccountFundsFrom({
Amount: "{Amount}",
Currency: "{Currency}",
DebitorAccountID: "{DebitorAccountID}",
ClientReferenceNumber: "{ClientReferenceNumber}",
Notes: "{Notes}",
IdempotencyKey: "{IdempotencyKey}"
})
Set Up Auto Balance Transfer - Official Docs
This method allows you to set up an auto-balance transfer from your VoPay account to your linked bank account. The frequency available to set the auto-transfer can be daily, weekly, bi-weekly or monthly.
// Check Official Docs for more fields in response
const { Success, ErrorMessage } = await VoPayClient.account.setupAutoBalanceTransfer({
ScheduleStartDate: "{ScheduleStartDate}",
AutoBalanceTransferAmount: "{AutoBalanceTransferAmount}",
TypeOfFrequency: "{TypeOfFrequency}",
EmailAddress: "{EmailAddress}",
FirstName: "{FirstName}",
LastName: "{LastName}",
CompanyName: "{CompanyName}",
Address1: "{Address1}",
City: "{City}",
Province: "{Province}",
Country: "{Country}",
PostalCode: "{PostalCode}",
AccountNumber: "{AccountNumber}",
FinancialInstitutionNumber: "{FinancialInstitutionNumber}",
BranchTransitNumber: "{BranchTransitNumber}",
FlinksAccountID: "{FlinksAccountID}",
FlinksLoginID: "{FlinksLoginID}",
Token: "{Token}",
PlaidPublicToken: "{PlaidPublicToken}",
PlaidAccessToken: "{PlaidAccessToken}",
PlaidAccountID: "{PlaidAccountID}",
PlaidProcessorToken: "{PlaidProcessorToken}",
InveriteRequestGUID: "{InveriteRequestGUID}"
})
Get Auto Balance Transfer Details - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage, AutoBalanceTransferAmount, NameOfFrequency,... } = await VoPayClient.account.getAutoBalanceTransferInfo()
Cancel Auto Balance Transfer - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage, Status } = await VoPayClient.account.cancelAutoBalanceTransfer()
EFT - Official Docs
Fund Your Vopay Account - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage, TransactionID } = await VoPayClient.eft.fundAccount({
FirstName: "{FirstName}",
LastName: "{LastName}",
CompanyName: "{CompanyName}",
DOB: "{DOB}",
PhoneNumber: "{PhoneNumber}",
Address1: "{Address1}",
City: "{City}",
Province: "{Province}",
Country: "{Country}",
PostalCode: "{PostalCode}",
AccountNumber: "{AccountNumber}",
FinancialInstitutionNumber: "{FinancialInstitutionNumber}",
BranchTransitNumber: "{BranchTransitNumber}",
Amount: "{Amount}",
Currency: "{Currency}",
ClientReferenceNumber: "{ClientReferenceNumber}",
KYCPerformed: "{KYCPerformed}",
KYCReferenceNumber: "{KYCReferenceNumber}",
EmailAddress: "{EmailAddress}",
IPAddress: "{IPAddress}",
FlinksAccountID: "{FlinksAccountID}",
FlinksLoginID: "{FlinksLoginID}",
Token: "{Token}",
PlaidPublicToken: "{PlaidPublicToken}",
PlaidAccessToken: "{PlaidAccessToken}",
PlaidAccountID: "{PlaidAccountID}",
PlaidProcessorToken: "{PlaidProcessorToken}",
InveriteRequestGUID: "{InveriteRequestGUID}",
TransactionLabel: "{TransactionLabel}",
Notes: "{Notes}",
DelayBankingInfo: "{DelayBankingInfo}",
IdempotencyKey: "{IdempotencyKey}"
})
Get Status of a Fund Transaction - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage, TransactionStatus, SubTransactions } = await VoPayClient.eft.getFundTransactionStatus({
TransactionID: "{TransactionID}"
})
Get Details of a Fund Transaction - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage, TransactionStatus, TransactionDateTime, Amount, SubTransactions } = await VoPayClient.eft.getFundTransactionInfo({
TransactionID: "{TransactionID}"
})
Withdraw funds out of your VoPay account - Official Docs
This endpoint is used to take funds out of your VoPay account, and deposit them to the specified recipient’s bank account. In the below endpoint, either CompanyName OR FirstName and LastName must be provided.
If either Token, Flinks (FlinksAccountID, FlinksLoginID), Inverite (InveriteRequestGUID), or Plaid (PlaidPublicToken/PlaidAccessToken, PlaidAccountID) is provided, then the FinancialInstitutionNumber, BranchTransitNumber, and AccountNumber will not be required.
If the bank information is provided (FinancialInstitutionNumber, BranchTransitNumber, and AccountNumber), then the Address1, City, Province, Country, and PostalCode are required.
// Check Official Docs for more fields in response
const { Success, ErrorMessage, TransactionID } = await VoPayClient.eft.withdraw({
ClientAccountID: "{ClientAccountID}",
FirstName: "{FirstName}",
LastName: "{LastName}",
CompanyName: "{CompanyName}",
DOB: "{DOB}",
PhoneNumber: "{PhoneNumber}",
Address1: "{Address1}",
City: "{City}",
Province: "{Province}",
Country: "{Country}",
PostalCode: "{PostalCode}",
AccountNumber: "{AccountNumber}",
FinancialInstitutionNumber: "{FinancialInstitutionNumber}",
BranchTransitNumber: "{BranchTransitNumber}",
IBAN: "{IBAN}",
ABARoutingNumber: "{ABARoutingNumber}",
SortCode: "{SortCode}",
Amount: "{Amount}",
Currency: "{Currency}",
ClientReferenceNumber: "{ClientReferenceNumber}",
KYCPerformed: "{KYCPerformed}",
KYCReferenceNumber: "{KYCReferenceNumber}",
EmailAddress: "{EmailAddress}",
IPAddress: "{IPAddress}",
FlinksAccountID: "{FlinksAccountID}",
FlinksLoginID: "{FlinksLoginID}",
Token: "{Token}",
PlaidPublicToken: "{PlaidPublicToken}",
PlaidAccessToken: "{PlaidAccessToken}",
PlaidAccountID: "{PlaidAccountID}",
PlaidProcessorToken: "{PlaidProcessorToken}",
InveriteRequestGUID: "{InveriteRequestGUID}",
ParentTransactionID: "{ParentTransactionID}",
TransactionLabel: "{TransactionLabel}",
Notes: "{Notes}",
DelayBankingInfo: "{DelayBankingInfo}",
IdempotencyKey: "{IdempotencyKey}"
})
Get single withdraw transaction info - Official Docs
This endpoint is used to look up details on a single withdraw transaction. Withdraw transactions debit funds from your account and deposit them into the customer's account.
// Check Official Docs for more fields in response
const { Success, ErrorMessage, TransactionID, TransactionStatus, PayLinkDetails } = await VoPayClient.eft.getWithdrawTransactionInfo({
TransactionID: "{TransactionID}"
})
Get single withdraw transaction status - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage, TransactionID, TransactionStatus, Timestamp } = await VoPayClient.eft.getWithdrawTransactionStatus({
TransactionID: "{TransactionID}"
})
Get Failed Transactions - Official Docs
// Check Official Docs for more fields in response
const { Success, ErrorMessage, NumberOfRecords, FailedTransactions } = await VoPayClient.eft.getFailedTransactions({
StartDateTime: "{StartDateTime}",
EndDateTime: "{EndDateTime}"
})
yarn install
Thanks for taking the time to contribute, please check out the lib to understand how things work.
Found a problem? Want a new feature? First of all, see if your issue or idea has already been reported. If don't, just open a new clear and descriptive issue.
Pull requests are the greatest contributions, so be sure they are focused in scope and do avoid unrelated commits.
- Fork it!
- Clone your fork:
git clone https://github.com/<your-username>/vopay-node
- Navigate to the newly cloned directory:
cd vopay-node
- Create a new branch for the new feature:
git checkout -b my-new-feature
- Install the tools necessary for development:
yarn
- Make your changes.
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request with full remarks documenting your changes