Transfer's Flow of Funds
Understand how Transfer moves money
Money movement in the US
To understand the Transfer flow of funds, it's important to understand how money functionally moves in the United States. Let's take the following example: Alice's Donut shop (at "Plaidypus First National Bank") wants to receive a $10 payment from Bob (at "Plaidypus Second National Bank").
In this example, it would be simplest if Plaid Transfer could just tell "Plaidypus Second National Bank" to send $10 from Bob's account directly to "Alice's Donut shop" account at "Plaidypus First National Bank". However, this is not possible in the American banking system today. ACH processors cannot tell arbitrary banks to send money to other arbitrary banks.
Instead, Plaid must withdraw $10 from Bob's account at "Plaidypus Second National Bank." Once that succeeds, Plaid can then send $10 to Alice's Donut Shop at "Plaidypus First National Bank." In other words, Plaid must sit in the middle of the process.
Receiving payments
Issuing ACH debits to your customers
In order to receive payments from your customers, you will create a transfer with type=debit
. The status
property of this transfer will be pending
until the transfer is relayed to the payment network to pull funds from your customer, at which point it becomes posted
and emits a corresponding event. From there, the status will transition to settled
via the schedule defined by the Federal Reserve, signaling to you that the settlement window has begun. At this point, it is generally safe to assume the ACH debit has shown up as pending in the user's bank account.
Receiving incoming funds
As part of the /transfer/authorization/create
call, you must define the funding_account_id
that corresponds to one of your business checking accounts where Plaid should automatically issue the payout. Omitting this this property while creating an ACH debit will default to using the funding_account_id
generated during your onboarding. You can find your list of funding_account_id
s in the Accounts page of your Plaid Dashboard under the Account ID column.
Once a transfer status is transitioned to settled
, Plaid begins the clock for a 5 business day internal hold period. This hold period mitigates your risk and ensures money is available to pay for any incoming returns. At the end of the hold period, the funds become eligible to be included in a payout sweep. Reducing this 5 day hold period requires additional due diligence and reserves to be held with Plaid; for more details, contact your Plaid Account Manager.
At the end of each business day (at 3:30pm EST time for same-day transfers, or 5:30pm EST for standard ACH transfers), Plaid will automatically calculate the amount to be paid out to you, and will issue a payout sweep to the defined funding account. The sweep_status
on the transfer object will transition to swept
to indicate the sweep is on the way, and swept_settled
when you should see the transaction in your bank account.
Your daily payout will be the sum total of debits whose hold time has elapsed, minus any funds that need to be sent back to the network (such as refunds you issued or ACH returns received that day).
Note that if the daily payout amount calculation results in a negative value (i.e. the sum of funds that need to be returned to the network is greater than the sum total of debits whose hold time has elapsed), Plaid will attempt to pull funds from your business checking account instead of depositing funds.
Handling returns
If a transfer experiences a return before the funds were released to you via a payout sweep, then the status of the transfer will transition to returned
and the sweep_status
will stay unswept
. If a return is encountered after the funds have already been swept, the funds will be taken back, and the sweep_status
will be transitioned to returned_swept
.
Issuing payouts
There are two ways to issue payouts to your customers on Plaid Transfer. What structure is right for you depends on your business's priorities.
You can use funds sitting in your business checking account. This optimizes for your own business's convenience. Or, you can use funds sitting in your Plaid Ledger. This optimizes for speed. Your end customers can receive money instantly (via RTP and FedNow) or within hours via Same-Day ACH credit.
Using funds from your business checking account
To optimize for your business's convenience, Plaid offers the ability to pull money directly from your business checking account in order to fund outgoing ACH credit transfer payouts. In order to use this method, when calling /transfer/authorization/create
, provide the funding_account_id
of the business checking account you'd like to use. You can find your list of funding_account_id
s in the Accounts page of your Plaid Dashboard under the Account ID column.
When you call /transfer/authorization/create
with type=credit
and a funding_account_id
defined, the transfer will be created with status=pending
and sweep_status=unswept
.
At the end of each business day (at 3:30pm EST time for Same-Day Transfers, or 5:30pm EST for standard ACH transfers), Plaid will sum up all ACH credit transfers you created that day and issue a sweep to the specified funding_account_id
in order to withdraw funds from your business checking account. This action will move the sweep_status
to be swept
and emit a corresponding event.
The amount that will be withdrawn from your account is calculated as the sum of ACH credits initiated before the business day cutoff, minus the ACH returns received that day. If the sum of the returns are greater than the amount needing to be withdrawn, Plaid will issue an ACH Credit sweep to your business checking account for the difference.
These funds will then be held for 3 business days to reduce risk of returns on the withdrawal. At the end of the last day of the 3 day hold period, Plaid will issue an ACH credit to the payment network in order to initiate a payout to your customer. This will move the status
to be posted
and emit a corresponding event.
If the transfer is returned (for example, due to the customer's bank account being closed), the funds will automatically be returned to you.
You must ensure that your accounting department does not reject these withdrawals from Plaid. Contact your bank to ensure you accept incoming ACH debits from the following company or Originator ID: 1460820571. If the withdrawals are rejected, Plaid may cancel your credit transfers.
Using funds from your Plaid Ledger balance
The fastest way to send money to your customers is to use the balance in your Plaid Ledger. In this method, you keep a pool of money held with Plaid, and Plaid uses these funds to issue payouts immediately with no holding period. Your end customers can receive funds instantly via RTP and FedNow, within hours via Same-Day ACH credits, or next-day via standard ACH credits. RTP and FedNow transfers are only available via keeping funds in your Plaid Ledger. Support for using your Plaid Ledger balance for ACH Debits is currently planned for release in mid-October 2023.
To issue a payout using your Plaid Ledger balance, call /transfer/authorization/create
with credit_funds_source
as prefunded_ach_credits
for ACH transfers, and credit_funds_source
as prefunded_rtp_credits
for RTP and FedNow transfers. These transfers do not utilize the "sweeps" flow at all, so you can ignore the sweep_status
field.
Managing your Plaid Ledger balance
To set up your initial pool of funds in Plaid Ledger, file a support ticket in the Plaid Dashboard. Plaid will provide you an account and routing number that your company can send funds to via wire or ACH credit. You can check the value of the Plaid Ledger balance any time via /transfer/balance/get
. Issuing credit transfers from your Plaid Ledger will deduct from the available balance. Note that if there are not enough funds to cover a transfer, then /transfer/authorization/create
will decline the transfer authorization with NSF
(ie “insufficient funds”) as the decline_rationale
.
In order to avoid declined transfers, you should discuss with your company the level of funds you want to keep in the balance, and how you intend to refill the balance once it has been used. For now, refills are only possible by sending an additional ACH Credit or Wire to the account and routing number mentioned above.
How much money to keep in your Ledger will depend on your business cash flow constraints. It is recommended to keep a minimum of three days' worth of funds in your balance to cover activity taking place over the weekend, when ACH credits and wires are unavailable.
Future tools to manage your Plaid Ledger balance
Starting in early October 2023, an API endpoint will exist that can deposit funds into your Plaid Ledger balance on your behalf. When you call this new API, Plaid will issue a sweep to withdraw funds from your funding account and make the funds available for use 3 business days later if you use Same-Day ACH for the sweep, or 4 business days later if you use Standard ACH. For example, if you issue a Same-Day ACH deposit by calling this API on Monday, funds will be available for use within the Plaid Ledger balance by end of day Thursday.
In mid October 2023, Transfer will support the option to automatically issue sweeps against your business checking account in order to deposit funds into your Plaid Ledger. In this method, Transfer will attempt to backfill any Plaid Ledger credit transfers completed that day, and make the funds available for use 3 to 4 business days later. If you're interested in enabling this feature, contact Support.