Plaid logo
Docs
ALL DOCS

Transfer

  • Transfer Overview
  • Transfer Application
  • Creating transfers
  • Reconciling transfers
  • Flow of funds
  • Transfer Dashboard
  • Refunds
  • Recurring transfers
  • Transfer UI
  • Errors and troubleshooting
  • Testing in Sandbox
Plaid logo
Docs
Close search modal
Experimental
Ask Finn!Ask a question to get started
Note: Finn isn't perfect. He's just a chatbot that reads our docs for fun. You should treat his answers with the same healthy skepticism you might treat any other answer on the internet. This chat may be logged for quality and training purposes. Please don't send Finn any PII -- he's scared of intimacy. All chats with Finn are subject to Plaid's Privacy Policy.
Plaid.com
Get API keys
Open nav

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

Was this helpful?
Developer community
GitHub
GitHub
Stack Overflow
Stack Overflow
YouTube
YouTube
Twitter
Twitter
Discord
Discord