Productfy logoLog In

Virtual Accounts


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 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 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 fieldACH 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.

Note: we currently do not support wire transfers with these account numbers

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 paymentAccountNumber field as the account number that the customer can use for direct deposit.
  • Routing Number - use the routingNumber field 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:

DataAPI Field
Account Open DateFinancialAccount.createdTs
Available BalanceFinancialAccount.currentAvailableBalance
Transaction Date (for pending transactions)FinancialTransaction.transactionTs
Transaction Date (for settled transactions)FinancialTransaction.settledTs
Transaction DescriptionFinancialTransaction.description

Step 5 - Creating Transactions

In general your customers create transactions on their account through other products and features like ACH 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.