Plaid logo
Docs
ALL DOCS

Transfer

  • Transfer Overview
  • Transfer Application
  • Plaid Ledger flow of funds
  • Creating transfers
  • Monitoring transfers
  • Transfer Dashboard
  • Refunds
  • Recurring transfers
  • Reserves
  • Transfer UI
  • Platform Payments
  • Errors and returns
  • Testing in Sandbox
  • Glossary
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:
    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 debit transfers settle into, and all credits are paid out from. Plaid provides several tools for moving money between your business checking account and your Ledger balance.

    Diagram of Plaid Ledger flow: Business account sweeps to Plaid ledger, transfers to customer account; details ACH credit/debit timing.
    Overview of the Plaid Ledger flow

    By clicking on your Ledger in the Dashboard, you will be directed to the specific Ledger's page.

    Plaid Ledger Balance page showing summary, pending funds, and balance history with search and filters for event ID and date range.
    Plaid Ledger details page

    From this page, you can:

    • View available and ending balances
    • View the release schedule of pending funds
    • Deposit funds into the Ledger
    • Withdraw funds from the Ledger to a linked funding account
    • View a real-time activity table of Ledger events and export the Ledger events as a CSV for reconciliation

    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 (3:30 PM Eastern for Same Day ACH, 8:30 PM Eastern for Standard ACH), 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.

    Same Day ACH debit schedule: Funds withdrawal on Mon-Wed, available by Fri-Mon, based on time submitted (EST).
    Example schedule for a Same Day ACH debit.
    Standard ACH debit schedule: Funds withdrawn 1-3 days after submission, available on the 4th day based on submission time.
    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 may 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.

    Even if your use case is for debit transfers only, you should retain enough funds in your Ledger to handle refunds and returns. Maintaining a zero or negative Ledger balance will prevent you from issuing refunds.

    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.

    To move money via the Dashboard, you must have the "Manage Transfer Ledger Funds" permission, available via the Team member setting page.

    Deposits that are pulled (debited) from your business checking account will be made available three business days after funds settle to Plaid. Note that this is different from the default five-day hold time applied to funds collected from debit transactions. The deposit will display the funds_available status in the Dashboard once the funds are available to use in your Ledger.

    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.

    Adding or changing funding accounts

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

    Dashboard UI showing 'Account details' section with a highlighted 'Add account' button for managing funding accounts.

    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. For the reasons described in Issuing payouts, it is not recommended to set a zero dollar minimum balance.

    If you don't set a minimum balance, or set a minimum balance of zero dollars, Plaid will automatically debit your linked funding account if you have a negative available balance that will not be covered by pending incoming funds.

    For example, if you have an available balance of -$500, and $300 in pending funds being released over the next three days, Plaid will debit your linked funding account by $200.

    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, click the "settings" button on the Ledger page. To change this setting, you must have the "Manage Transfer Ledger Funds" permission, available via the Team member setting page.

    Plaid dashboard showing Ledger summary, balance history, and settings for maintaining minimum balance in transfer flow.
    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 (note that this is different from the standard five day hold time applied to funds collected from debit transactions).

    To see when the transfer is available in your Ledger, you can use the /transfer/event/list or /transfer/get endpoint to check for the sweep.funds_available status. You can also check the value of the Plaid Ledger balance via API by calling /transfer/ledger/get.

    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.

    Moving money via ACH, RTP, or wire transfer

    On the Ledger details page in the Dashboard, click the "Settings" icon in the upper right to view an account and routing number you can use to push funds to the Ledger via ACH credit, RTP 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

    You can maintain multiple Ledger balances with Plaid. This is useful when you need separation between certain types of transactions for accounting purposes, or to connect different transactions with different bank accounts. For instance, you can use multiple Ledgers to:

    • Use separate funding accounts to issue credits and collect debits.
    • Keep accounting separate for different use cases, business units, or states where you operate.

    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. From the Ledgers page, click "add". You will be prompted to assign a name for the Ledger and select one of your active funding accounts as the default funding account for this new Ledger. When you select a funding account for your Ledger, all of your automatic deposits and withdrawals flow to and from that funding account.

    Create a new ledger with fields for 'Ledger name' and 'Default funding account'. Checkbox to set as default ledger.
    Adding a Ledger

    If you need to create more than ten total Ledgers, submit a support ticket.

    You can also view the detailed info of each Ledger via the Dashboard, including the Ledger’s id, name, balance, transaction history, and pending balance.

    Default Ledger Balance page showing a summary. Pending funds timeline and balance history are also visible.
    List of multiple Ledgers

    Each Ledger has its own separate balance settings, including the funding account and minimum and maximum balance rules. You can share a single funding account across multiple Ledgers, or give each Ledger its own funding account.

    Once created, additional Ledgers cannot be deleted. This is because Ledgers function as audit logs for your transaction history. If you no longer wish to use a Ledger, you can stop assigning transactions to it.

    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. You can change which Ledger is considered the default in the Dashboard.

    Each Ledger's balance history is reported separately.

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

    Multi-ledger flow: Debit transfers to Pay-ins ledger, credit sweep to Funding account 1; Debit sweep from Funding account 2 to Pay-outs ledger, credit transfers to user accounts.
    Example multi-Ledger funds flow, using separate funds for issuing credits and collecting debits
    Flow diagram showing debit transfers from end user accounts to Ledgers 1, 2, and 3, then credits to Funding accounts 1 and 2.
    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