Virtual accounts are flexible holding accounts on the Productfy system that store value for a customer. Most commonly these accounts are used to hold customer deposits of U.S. dollars, however the virtual account structure does allow them to be used to store non-monetary data (e.g. rewards, tokens, etc.).
Virtual accounts will show balances, transactions, and can have money moved with them over ACH/wires or spending done on them via debit cards. Just like regular bank checking accounts, virtual accounts get an account number and routing number that can be used for ACH. Additionally, virtual accounts get pass-through FDIC insurance up to $250,000.
Funding Virtual Accounts
There are a variety of ways to get money on to a virtual account:
- A customer can link a third party bank account and transfer money in via ACH. See our Account Linking and ACH implementation guides for more information.
- A customer can wire transfer money in to their virtual account. Talk to your Productfy representative for details on how to use our wire transfer feature.
- A customer or company can use the account number and routing number from the virtual account on the Productfy system to deposit money from another source (like setting up direct deposit from their employer for their paycheck, or depositing funds from a company that asks for account number and routing number to initiate an ACH transaction of their own).
Virtual accounts are backed by an FBO account (For-Benefit-Of) opened at our partner bank where the aggregated funds for the virtual accounts are stored. You will also need to fund a reserve account used as buffer in the case of disputes, fraud, returns and other anomalies.
Before creating a virtual account, you need to be sure the following is in place:
- A valid Person ID or Organization ID is created (see Getting Started Guide)
- KYC or KYB is passed, depending on whether you have a human customer or business customer (see the KYC and KYB guides)
Step 1 - Create Virtual Account Product
You will need to go through a one-time setup task of creating your Virtual Account product on the Productfy system, which gives you the financialProductId you need in subsequent API calls.
Step 2 - Creating Virtual Accounts
To create a virtual account, simply use the Create Virtual Account API below. Enter the financialProductID from step 1, and the person ID or Organization ID of the entity (who must have already passed KYC or KYB). Your system will most likely need to store the Virtual Account ID that gets returned.
Virtual accounts can be associated with either a Person ID (if the owner is a human), an Organization ID (if the owner is a business), or both a Person ID and Organization ID together (if a business is granting an employee access to a subset of the business’s funds).
Note - ACH transfer limits will get applied depending on whether the virtual account is a business account or consumer account, which is dictated by the accountUsageType field. Productfy’s standard limits are below:
|accountUsageType field||ACH Transfer Limits|
|P-Personal||$10,000 per day|
|B-Business||$100,000 per day|
*Note - if you are interested in raising limits beyond these defaults please talk to your Productfy representative.
Step 3 - Viewing the routing number / account number
Each virtual account automatically gets assigned an account number and routing number that can be used for ACH credits (i.e. adding money to the account), such as direct deposit of paychecks.
The account number and routing number are returned to you in real-time after the Create Virtual Account API call, or via the Get Account query. They can be found as follows:
- Account Number - use the
paymentAccountNumberfield as the account number that the customer can use for direct deposit.
- Routing Number - use the
routingNumberfield within the financialServiceProvider object which is within the VirtualAccount object.
Step 4 - Retrieve Accounts and Details
After accounts are created, you may want to display a list of accounts and transactions to your customer. Use the Get Multiple Accounts API to retrieve account data for a Person ID or Organization ID. Popular fields to use are as follows:
|Account Open Date||FinancialAccount.createdTs|
|Transaction Date (for pending transactions)||FinancialTransaction.transactionTs|
|Transaction Date (for settled transactions)||FinancialTransaction.settledTs|
Step 5 - Creating Transactions
In general your customers create transactions on their account through other products and features like ACH, wires and debit cards.
There is an API to manually create a transaction on a virtual account, which can be used for testing, and in rare cases in production (consult with your Productfy representative for more information). Note, the funds in virtual accounts must match the funds in the FBO settlement account or else there will be an out of balance situation.
Step 6 - Generating Statements
Productfy automatically generates and stores fully compliant PDF statements and triggers a statement webhook when each statement is available for you to send a notification to your customers. Statements will automatically be generated at the end of every month.
Note - in the QA environment statements will run on this same schedule.
Use the following API to retrieve statements for a given account ID, and get the URLs necessary that will link to the PDF statement itself.