Plaid logo
Docs
ALL DOCS

Transfer

  • Transfer Overview
  • Transfer Application
  • Creating transfers
  • Monitoring transfers
  • Plaid Ledger flow of funds
  • Transfer Dashboard
  • Refunds
  • Recurring transfers
  • Transfer UI
  • Platform Payments
  • Errors and troubleshooting
  • Testing in Sandbox
  • Legacy Flow of funds
Plaid logo
Docs
Close search modal
Ask Bill!
Ask Bill!
Hi! I'm Bill! You can ask me all about the Plaid API. Try asking questions like:
  • Why is /transactions/sync/ better than /get?
  • What is Remember Me?
  • How do I enable IDV selfie checks?
Note: Bill isn't perfect. He's just a robot platypus 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 Bill any PII -- he's scared of intimacy. All chats with Bill are subject to Plaid's Privacy Policy.
Plaid.com
Log in
Get API Keys
Open nav

Plaid Ledger flow of funds

Understand how Transfer moves money with the Plaid Ledger

Plaid Ledger overview

The Plaid Ledger is a balance you keep with Plaid for use with the Transfer product. It is a settlement balance that all ACH debit transfers settle into, and all ACH/RTP/FedNow credits are paid out from. Plaid provides several tools for moving money between your business checking account and your Ledger balance.

Overview of the Plaid Ledger.
Overview of the Plaid Ledger.

Receiving payments

Your Plaid Ledger account has two balance values: pending, which contains funds that are in processing, and available, which contain funds that are available for use.

When receiving payments from your customers (via an ACH debit transfer), funds are placed in the pending balance as soon as your transfer is created.

These funds then become available after a hold period elapses; once the funds have been made available, the funds_available event will be emitted. The projected date when funds in the pending state will be available is displayed on the Dashboard. It can also be obtained via any endpoint that returns a transfer object, such as /transfer/get, in the transfer.expected_funds_available_date field.

The hold period typically is completed at 3pm EST five business days after the transfer's settled event is emitted. If you are using same-day ACH and your transfer is posted in time to make that day's transmission deadline, this settled event will occur the same day that the transfer was created. Add one additional business day if you miss the cutoff window, and one business day if you are not using same-day ACH.

See below for an example schedule of when an ACH debit is withdrawn from a consumer's account (corresponding to the settled event), and when the funds are made available to you.

Example schedule for a Same-Day ACH debit.
Example schedule for a Same-Day ACH debit.
Example schedule for a Standard ACH debit.
Example schedule for a Standard ACH debit.

If the ACH debit experiences a return or reversal, the funds will be clawed back from the Plaid Ledger balance. If the funds have already been made available and withdrawn to your business checking account, your available Ledger balance will go negative.

For more details on why a payment could be returned, see Troubleshooting ACH Returns.

Issuing payouts

When issuing payouts to your customers (via ACH credit and RTP/FedNow transfers), the funds for the payout are deducted from your available balance and are sent out to your consumer in the next available ACH window, or immediately for RTP/FedNow. If there are not enough funds in your available balance to cover a transfer, then /transfer/authorization/create will decline the transfer authorization with NSF (insufficient funds) as the decision_rationale.

You can check the value of the Plaid Ledger balance any time via the Dashboard or by calling /transfer/ledger/get.

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.

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.

Moving money between Plaid Ledger and your bank account

It is important to consider your strategy for moving funds between your Plaid Ledger balance and your business checking bank account. The Plaid Ledger balance cannot be used to store funds indefinitely.

Plaid provides four methods to manage your Plaid Ledger balance. Sweeps to or from your Ledger balance are priced the same as a transfer (for example, a network=rtp Ledger balance withdrawal is priced as an RTP transfer). If using Same-Day ACH and your sweep amount is over the Same-Day ACH transaction limit of $1M, Plaid will automatically break your sweep request into multiple transfers.

Each of the following methods will create a sweep object, viewable in /transfer/sweep/list and will emit sweep.* events for you to observe. See Reconciling Transfers for more details.

MethodOptimizes for...
DashboardAd-hoc manual deposits/withdrawals
API endpointsCustom deposit/withdrawal logic
Automatic balance thresholdsOngoing hands-off management
Pushing funds to Ledger via wire or ACHImmediate funds availability

If you are a Platform Payments (beta) customer, the API is the only method available for moving funds. For more details on moving money as a Platform, see the Platform Payments documentation.

Moving money via the Dashboard

You can use the Plaid Dashboard to manually trigger a deposit or withdrawal. Withdrawals will push the funds to your business checking account in the next same-day ACH window. Deposits into your Plaid Ledger balance will pull from (debit) your business checking account using same-day ACH, and put the funds in your pending balance.

Deposits that are pulled (debited) from your business checking account will be made available 3 business days after funds settle to Plaid.

You must ensure that your accounting department does not reject pulls from Plaid to deposit money into your Ledger balance. Contact your bank to ensure you accept incoming ACH debits from the following company or Originator ID: 1460820571.

To add or change a funding account, navigate to the “Account Details” page of the Transfer dashboard and click on “Add account”.

Screenshot of the dashboard UI highlighting the location of the "Add account" button

You will then be able to use Plaid Link to automatically connect your account and verify that it is open, active, and belongs to you.  For accounts that are unable to be linked via Plaid, there will be an option to manually enter account and routing information, and submit two bank statements to confirm your ownership of the account. Manually linked accounts will be reviewed by the Plaid team, and you will receive an email confirmation upon approval.

When new funding accounts are added, an email notification is sent to admins on the Plaid account notifying them of the change.

Within the dashboard, you can also specify which funding account to use as the default account for sweeps, give the account a friendly name, or remove the account.

Automatically managing the balance level

You can set up automatic balance thresholds, allowing you to operate in a "set and forget" model. You can set both a minimum balance and a maximum balance.

Every business day at 3pm EST, Plaid will attempt to withdraw or deposit funds, depending on your configuration. If your available Ledger balance exceeds the maximum balance defined, Plaid will move money from your Ledger to your bank account using Same Day ACH. These funds should be available in your business checking account by 6pm EST.

If your overall Ledger balance (including both pending and available balances) goes below your minimum balance, Plaid will move funds from your bank account to your Ledger using Same Day ACH. These funds will be placed in the pending balance, and made available 3 business days after the funds settle to Plaid.

To enable automatic refills and withdrawals, update your settings on the Transfer account details page.

Moving money via API

The API is the most flexible method for moving funds, as you can determine when and how your money moves: via Same Day ACH, standard ACH, or instantly via RTP/FedNow.

To deposit funds into your Plaid Ledger balance via API, use /transfer/ledger/deposit. This endpoint will issue a sweep to withdraw funds from your funding account. Once Plaid has received the funds (you may specify either standard or Same Day ACH), they will be made available after a three business day hold.

To withdraw funds from your Plaid Ledger balance via API, use /transfer/ledger/withdraw. You can choose the rails to use for the transfer: Same Day ACH, standard ACH, or instant.

You can check the value of the Plaid Ledger balance via API by calling /transfer/ledger/get.

Moving money via ACH or wire transfer

Use the Plaid Dashboard to view an account and routing number you can push funds to via ACH credit or wire. In this approach, you contact your bank (often via their website) to push funds to Plaid. Pushed funds become available for use in your Plaid Ledger as soon as they are received from the network. This method can only be used to deposit money into your Ledger; it cannot be used to withdraw funds. Incoming wires pushed to the Plaid Ledger are charged a separate fee, billed to your account. Incoming ACH and RTP credits pushed to the Plaid Ledger incur no fee. For more details, contact your Plaid Account Manager.

Maintaining multiple Ledger balances

If relevant, you can maintain multiple Ledger balances with Plaid. This is useful when you need separate funds for different use cases. For instance:

  • You may want to use separate funds to issue credits and collect debits.
  • You have legal requirements to keep funds separate for different use cases.

Every Plaid client has one Ledger created and ready to use as their default Ledger to originate transfers or sweeps. You can create additional Ledgers in the Plaid Transfer dashboard. You can also view the detailed info of each Ledger via the dashboard, including the Ledger’s id, name, balance and account/routing numbers.

Once created, additional Ledgers cannot be deleted.

Working with multiple Ledgers

If you have created multiple Ledgers, you should indicate which Ledger to use by specifying a ledger_id when calling /transfer/authorization/create, /transfer/ledger/deposit, and /transfer/ledger/withdraw. If no ledger_id is specified, Plaid will use your default Ledger.

Transfer objects, including authorization, transfer, transfer_event, sweep and ledger, will contain a ledger_id field, indicating which Ledger the object is associated with.

Example multi-Ledger funds flow, using separate funds for issuing credits and collecting debits
Example multi-Ledger funds flow, using separate funds for different states
Was this helpful?
Developer community
GitHub
GitHub
Stack Overflow
Stack Overflow
YouTube
YouTube
Discord
Discord