> ## Documentation Index
> Fetch the complete documentation index at: https://docs.methodfi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# FBO Funding (push or pull)

> Fund Payments through a shared Method-managed FBO Account.

export const FlowOfFundsStyles = () => {
  const flowOfFundsStyles = `
/* Flow of funds diagram. */
.fof-diagram.fof-diagram {
    --fof-ink: #000827;
    --fof-muted: rgba(0, 8, 39, 0.64);
    --fof-subtle: rgba(0, 8, 39, 0.5);
    --fof-line: rgba(0, 8, 39, 0.12);
    --fof-line-strong: rgba(0, 8, 39, 0.34);
    --fof-surface: #F2F8F9;
    --fof-node: #FFFFFF;
    --fof-opal: #00FFD1;
    --fof-mono: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
    box-sizing: border-box;
    width: 100%;
    margin: 1rem 0 1.5rem;
    color: var(--fof-ink);
    container: flow-of-funds / inline-size;
}

.fof-diagram.fof-diagram,
.fof-diagram.fof-diagram section,
.fof-diagram.fof-diagram header,
.fof-diagram.fof-diagram div,
.fof-diagram.fof-diagram span,
.fof-diagram.fof-diagram strong,
.fof-diagram.fof-diagram small,
.fof-diagram.fof-diagram h3,
.fof-diagram.fof-diagram p,
.fof-diagram.fof-diagram b,
.fof-diagram.fof-diagram em {
    box-sizing: border-box;
}

.fof-diagram-caption {
    display: flex;
    padding: 0 0 0.875rem;
}

.fof-diagram-caption > span:first-child {
    display: flex;
    min-width: 0;
    flex-direction: column;
    gap: 0.25rem;
}

.fof-diagram.fof-diagram .fof-diagram-caption strong {
    color: var(--fof-ink) !important;
    font-size: 1.25rem;
    font-weight: 600;
    line-height: 1.3;
}

.fof-diagram.fof-diagram .fof-diagram-caption small {
    color: var(--fof-muted) !important;
    font-size: 0.8125rem;
    line-height: 1.4;
}

.fof-diagram-columns {
    padding: 0 0.875rem 0.625rem;
}

.fof-diagram.fof-diagram .fof-diagram-columns div span {
    color: var(--fof-subtle) !important;
    font: 500 0.6rem/1.2 var(--fof-mono);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.fof-diagram-columns > div {
    display: grid;
    text-align: center;
    grid-template-columns: minmax(7rem, 1fr) minmax(4.25rem, 0.68fr) minmax(7rem, 1fr) minmax(4.25rem, 0.68fr) minmax(7rem, 1fr);
}

.fof-diagram-columns > div span:nth-child(1) {
    grid-column: 1;
}

.fof-diagram-columns > div span:nth-child(2) {
    grid-column: 3;
}

.fof-diagram-columns > div span:nth-child(3) {
    grid-column: 5;
}

.fof-diagram-rows {
    overflow: hidden;
    border: 1px solid var(--fof-line);
    border-radius: 0.75rem;
    background: var(--fof-surface);
}

.fof-diagram-row {
    min-height: 12.9375rem;
    padding: 1.125rem 0.875rem;
    border-top: 1px solid var(--fof-line);
}

.fof-diagram-row:first-child {
    border-top: 0;
}

.fof-model-label {
    display: flex;
    min-width: 0;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
}

.fof-diagram.fof-diagram .fof-model-label h3 {
    margin: 0;
    color: var(--fof-ink) !important;
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    line-height: 1.2;
}

.fof-diagram.fof-diagram .fof-model-label p {
    margin: 0;
    color: var(--fof-muted) !important;
    font-size: 0.6875rem;
    line-height: 1.35;
    text-align: right;
}

.fof-money-path {
    display: grid;
    min-width: 0;
    align-items: center;
    margin-top: 1rem;
    grid-template-columns: minmax(7rem, 1fr) minmax(4.25rem, 0.68fr) minmax(7rem, 1fr) minmax(4.25rem, 0.68fr) minmax(7rem, 1fr);
}

.fof-money-path-item {
    display: contents;
}

.fof-money-node {
    display: flex;
    min-width: 0;
    min-height: 8rem;
    align-items: flex-start;
    flex-direction: column;
    padding: 0.75rem;
    border: 1px solid var(--fof-line-strong);
    border-radius: 0.55rem;
    background: var(--fof-node);
    box-shadow: 0 0.125rem 0.5rem rgba(0, 8, 39, 0.05);
}

.fof-money-node.is-accent {
    border-color: var(--fof-ink);
    box-shadow: inset 0 0.2rem 0 var(--fof-opal), 0 0.125rem 0.5rem rgba(0, 8, 39, 0.07);
}

.fof-money-icon {
    display: inline-flex;
    width: 2rem;
    height: 2rem;
    align-items: center;
    justify-content: center;
    margin-bottom: 0.75rem;
    border: 1px solid var(--fof-line);
    border-radius: 50%;
    background: var(--fof-surface);
}

.fof-money-node.is-accent .fof-money-icon {
    border-color: var(--fof-ink);
    background: var(--fof-opal);
    color: #000827 !important;
}

.fof-money-icon svg {
    width: 1rem;
    height: 1rem;
    fill: none;
    stroke: currentColor;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 1.5;
}

.fof-money-node > span:last-child {
    display: flex;
    min-width: 0;
    flex-direction: column;
    gap: 0.15rem;
    margin-top: 0;
}

.fof-diagram.fof-diagram .fof-money-node small {
    color: var(--fof-subtle) !important;
    font: 500 0.525rem/1 var(--fof-mono);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.fof-diagram.fof-diagram .fof-money-node strong {
    color: var(--fof-ink) !important;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.2;
}

.fof-diagram.fof-diagram .fof-money-node em {
    color: var(--fof-muted) !important;
    font-size: 0.625rem;
    font-style: normal;
    line-height: 1.3;
}

.fof-diagram.fof-diagram .fof-money-requirement {
    display: inline-flex;
    width: fit-content;
    margin-top: auto;
    padding: 0.3rem 0.4rem;
    border: 1px solid var(--fof-line);
    border-radius: 0.3rem;
    background: var(--fof-surface);
    color: var(--fof-ink) !important;
    font: 600 0.525rem/1.2 var(--fof-mono);
}

.fof-money-connector {
    display: flex;
    min-width: 0;
    align-items: center;
    flex-direction: column;
    justify-content: center;
    padding: 0.5rem 0.35rem;
    text-align: center;
}

.fof-diagram.fof-diagram .fof-money-connector small {
    color: var(--fof-subtle) !important;
    font: 500 0.5rem/1 var(--fof-mono);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.fof-diagram.fof-diagram .fof-money-connector strong {
    margin-top: 0.3rem;
    color: var(--fof-ink) !important;
    font: 600 0.5625rem/1.3 var(--fof-mono);
}

.fof-money-connector i {
    position: relative;
    display: block;
    width: calc(100% + 0.5rem);
    height: 0.65rem;
    margin: 0.4rem 0;
}

.fof-money-connector i::before {
    position: absolute;
    top: 0.25rem;
    right: 0.1rem;
    left: 0;
    height: 0.125rem;
    border-radius: 0.1rem;
    background: var(--fof-opal);
    content: "";
}

.fof-money-connector i::after {
    position: absolute;
    top: 0.05rem;
    right: 0;
    width: 0.45rem;
    height: 0.45rem;
    border-top: 0.125rem solid var(--fof-opal);
    border-right: 0.125rem solid var(--fof-opal);
    content: "";
    transform: rotate(45deg);
}

.fof-diagram.fof-diagram .fof-money-connector > span {
    color: var(--fof-muted) !important;
    font-size: 0.55rem;
    line-height: 1.2;
}

.fof-support-account {
    display: flex;
    width: fit-content;
    max-width: 100%;
    align-items: center;
    gap: 0.5rem;
    margin: 0.875rem auto 0;
    padding: 0.5rem 0.625rem;
    border: 1px dashed var(--fof-line-strong);
    border-radius: 0.4rem;
    background: var(--fof-node);
}

.fof-diagram.fof-diagram .fof-support-account small {
    color: var(--fof-subtle) !important;
    font: 500 0.525rem/1 var(--fof-mono);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.fof-diagram.fof-diagram .fof-support-account strong {
    color: var(--fof-ink) !important;
    font-size: 0.625rem;
    font-weight: 600;
    line-height: 1.2;
}

.fof-diagram.fof-diagram .fof-support-account span {
    color: var(--fof-muted) !important;
    font-size: 0.575rem;
    line-height: 1.2;
}

html:is(.dark) .fof-diagram.fof-diagram {
    --fof-ink: #FFFFFF;
    --fof-muted: rgba(255, 255, 255, 0.68);
    --fof-subtle: rgba(255, 255, 255, 0.5);
    --fof-line: rgba(255, 255, 255, 0.1);
    --fof-line-strong: rgba(255, 255, 255, 0.28);
    --fof-surface: #07142F;
    --fof-node: #000827;
}

@container flow-of-funds (max-width: 32rem) {
    .fof-diagram-columns {
        display: none;
    }

    .fof-diagram-row {
        min-height: 0;
        padding: 1.25rem;
    }

    .fof-model-label {
        align-items: flex-start;
        flex-direction: column;
        gap: 0.25rem;
    }

    .fof-diagram.fof-diagram .fof-model-label h3 {
        margin-top: 0;
    }

    .fof-diagram.fof-diagram .fof-model-label p {
        text-align: left;
    }

    .fof-money-path {
        grid-template-columns: 1fr;
    }

    .fof-money-node {
        min-height: 4.5rem;
        align-items: center;
        flex-direction: row;
        gap: 0.75rem;
    }

    .fof-money-icon {
        flex: 0 0 auto;
        margin: 0;
    }

    .fof-money-node > span:last-child {
        margin-top: 0;
    }

    .fof-money-connector {
        min-height: 4.25rem;
        padding: 0.35rem;
    }

    .fof-diagram.fof-diagram .fof-money-connector strong {
        min-height: 0;
    }

    .fof-money-connector i {
        width: 0.75rem;
        height: 1.45rem;
        margin: 0.25rem 0;
    }

    .fof-money-connector i::before {
        top: 0;
        right: auto;
        bottom: 0.15rem;
        left: 0.3rem;
        width: 0.125rem;
        height: auto;
    }

    .fof-money-connector i::after {
        top: auto;
        right: 0.1rem;
        bottom: 0.1rem;
        transform: rotate(135deg);
    }

    .fof-support-account {
        width: 100%;
        align-items: flex-start;
        flex-direction: column;
        gap: 0.2rem;
    }

}

@container flow-of-funds (max-width: 28rem) {
    .fof-diagram-row {
        padding: 1rem;
    }
}

@media (prefers-reduced-motion: reduce) {
    .fof-diagram *,
    .fof-diagram *::before,
    .fof-diagram *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.001ms !important;
    }
}
`;
  return <style>{flowOfFundsStyles}</style>;
};

export const FlowOfFunds = ({model = "fbo-push"}) => {
  const models = [{
    key: "fbo-push",
    title: "FBO funding (push)",
    starts: "Payment creation cutoff: ACH 1:30 PM CT; wire 3:30 PM CT",
    nodes: [{
      icon: "bank",
      role: "Funding source",
      label: "Disbursement Account",
      detail: "You send funds"
    }, {
      icon: "vault",
      role: "Method-managed",
      label: "Shared FBO Account",
      detail: "Funds a group of Payments",
      requirement: "Prefunding may apply",
      accent: true
    }, {
      icon: "liability",
      role: "Destination",
      label: "Liability",
      detail: "Eligible destination Account"
    }],
    connectors: [{
      phase: "Fund",
      label: "ACH or wire",
      detail: "You initiate"
    }, {
      phase: "Disburse",
      label: "Payment",
      detail: "Method sends"
    }]
  }, {
    key: "fbo-pull",
    title: "FBO funding (pull)",
    starts: "Payment creation cutoff: 1:30 PM CT",
    nodes: [{
      icon: "bank",
      role: "Funding source",
      label: "Disbursement Account",
      detail: "Method pulls funds"
    }, {
      icon: "vault",
      role: "Method-managed",
      label: "Shared FBO Account",
      detail: "Funds a group of Payments",
      accent: true
    }, {
      icon: "liability",
      role: "Destination",
      label: "Liability",
      detail: "Eligible destination Account"
    }],
    connectors: [{
      phase: "Fund",
      label: "ACH debit",
      detail: "Method initiates"
    }, {
      phase: "Disburse",
      label: "Payment",
      detail: "Method sends"
    }],
    support: {
      label: "Separate reserve Account",
      detail: "May be required outside the payment path"
    }
  }, {
    key: "per-payment-funding",
    title: "Per-Payment funding (push)",
    starts: "Inbound funds cutoff: ACH 1:30 PM CT; wire 3:30 PM CT",
    nodes: [{
      icon: "bank",
      role: "Funding source",
      label: "Disbursement Account",
      detail: "You send the exact amount"
    }, {
      icon: "routing",
      role: "Method-managed FBO",
      label: "Payment Instrument",
      detail: "Instructions for one liability",
      requirement: "No reserve needed",
      accent: true
    }, {
      icon: "liability",
      role: "Destination",
      label: "Liability",
      detail: "Mapped destination Account"
    }],
    connectors: [{
      phase: "Fund",
      label: "Exact amount",
      detail: "ACH or wire"
    }, {
      phase: "Create and route",
      label: "Payment",
      detail: "Method handles routing"
    }]
  }];
  const renderIcon = name => {
    if (name === "bank") {
      return <svg viewBox="0 0 24 24" aria-hidden="true">
          <path d="M3 9h18M5 9v10M9 9v10m6-10v10m4-10v10M3 19h18M12 3l9 4H3l9-4Z" />
        </svg>;
    }
    if (name === "liability") {
      return <svg viewBox="0 0 24 24" aria-hidden="true">
          <rect x="3" y="5" width="18" height="14" rx="2" />
          <path d="M3 10h18M7 15h4" />
        </svg>;
    }
    if (name === "vault") {
      return <svg viewBox="0 0 24 24" aria-hidden="true">
          <rect x="3" y="4" width="18" height="16" rx="2" />
          <circle cx="12" cy="12" r="3" />
          <path d="M12 9V7m3 5h2m-5 3v2m-3-5H7" />
        </svg>;
    }
    if (name === "routing") {
      return <svg viewBox="0 0 24 24" aria-hidden="true">
          <rect x="3" y="4" width="18" height="16" rx="2" />
          <path d="M7 9h10M7 13h4M7 17h7" />
        </svg>;
    }
    return null;
  };
  const selected = models.find(item => item.key === model) || models[0];
  const titleId = `fof-diagram-title-${selected.key}`;
  const descriptionId = `fof-diagram-description-${selected.key}`;
  return <>
      <figure className="fof-diagram not-prose" aria-labelledby={titleId} aria-describedby={descriptionId}>
      <figcaption className="fof-diagram-caption">
        <span>
          <strong id={titleId}>How money moves</strong>
          <small id={descriptionId}>See how funds enter Method and reach the liability.</small>
        </span>
      </figcaption>

      <div className="fof-diagram-columns" aria-hidden="true">
        <div>
          <span>Disbursement account</span>
          <span>Method-managed</span>
          <span>Destination</span>
        </div>
      </div>

      <div className="fof-diagram-rows">
        <section className="fof-diagram-row">
          <header className="fof-model-label">
            <h3>{selected.title}</h3>
            <p>{selected.starts}</p>
          </header>

          <div className="fof-money-path">
            {selected.nodes.map((node, index) => <div className="fof-money-path-item" key={node.label}>
                <div className={"fof-money-node" + (node.accent ? " is-accent" : "")}>
                  <span className="fof-money-icon">{renderIcon(node.icon)}</span>
                  <span>
                    <small>{node.role}</small>
                    <strong>{node.label}</strong>
                    <em>{node.detail}</em>
                    {node.requirement ? <b className="fof-money-requirement">{node.requirement}</b> : null}
                  </span>
                </div>

                {index < selected.connectors.length ? <div className="fof-money-connector">
                    <small>{selected.connectors[index].phase}</small>
                    <strong>{selected.connectors[index].label}</strong>
                    <i aria-hidden="true" />
                    <span>{selected.connectors[index].detail}</span>
                  </div> : null}
              </div>)}
          </div>

          {selected.support ? <div className="fof-support-account">
              <small>Supporting account</small>
              <strong>{selected.support.label}</strong>
              <span>{selected.support.detail}</span>
            </div> : null}

        </section>
      </div>
      </figure>
    </>;
};

With FBO funding, a Method-managed for-benefit-of (FBO) Account supplies funds for a group of Payments. You can fund it in two ways:

* **Push:** You send funds to the FBO Account by ACH or wire.
* **Pull:** Method debits your verified disbursement Account by ACH and moves the funds to the FBO Account.

Method uses the FBO Account's available balance to disburse Payments to eligible liabilities.

<Note>
  Method configures the FBO Account, funding instructions, and operating requirements during implementation. You do not select a funding model in `POST /payments`.
</Note>

## Flow and schedule

<FlowOfFundsStyles />

<Tabs>
  <Tab title="Push">
    <FlowOfFunds model="fbo-push" />

    ### Daily schedule

    | Rail     | Payment creation cutoff | Initiate batch funding by              |
    | -------- | ----------------------- | -------------------------------------- |
    | **ACH**  | 1:30 PM CT              | Initiate the ACH credit by 1:45 PM CT. |
    | **Wire** | 3:30 PM CT              | Initiate the wire by 4:15 PM CT.       |

    The Payment creation cutoff determines which Payments enter the batch. The later time is the deadline to initiate funding for that batch, not when the funds must arrive.

    At 4:30 PM CT, Method starts to disburse funded Payments. On the next banking day, reconcile the FBO balance, Payments, and funded reversals.

    <Note>
      **ACH funding:** Do not wait for the 3:35 PM CT reports. Use the funding target configured during implementation, the outstanding Payments in your own ledger at the 1:30 PM CT cutoff, and the FBO Account's `available_balance` to size the ACH credit. Use the reports to reconcile the batch after funding.

      **Wire funding:** Push summary and itemized [Report Schedules](/reference/report-schedules/overview) run at 3:35 PM CT, after the 3:30 PM CT Payment cutoff. Compare the summary with the FBO Account's `available_balance` to size the wire due by 4:15 PM CT.
    </Note>

    <Warning>
      Method confirms the transfer instructions and any bank-specific lead time during implementation. Initiate funding early enough for the FBO Account to be funded before disbursement starts.
    </Warning>
  </Tab>

  <Tab title="Pull">
    <FlowOfFunds model="fbo-pull" />

    ### Daily schedule

    | Time                  | Action                                                                                                               |
    | --------------------- | -------------------------------------------------------------------------------------------------------------------- |
    | **Before 1:30 PM CT** | Create Payments and confirm that the disbursement Account is active.                                                 |
    | **1:30 PM CT**        | The Payment cycle closes. Method initiates the ACH debit from the disbursement Account.                              |
    | **1:35 PM CT**        | Pull summary and itemized [Report Schedules](/reference/report-schedules/overview) run for recurring reconciliation. |
    | **After the cycle**   | Method processes eligible Payments according to the configured funding and hold rules.                               |
    | **Next banking day**  | Reconcile the source transfer and Payment statuses.                                                                  |
  </Tab>
</Tabs>

The schedules apply on banking days and exclude banking holidays.

## Reserves, prefunding, and holds

Your FBO setup may include a reserve requirement, a prefunding requirement, or a funding hold.

* **Reserve:** A required balance held in a separate Method-managed reserve Account outside the operating flow of funds. It covers failures when Method pulls funds from the source Account, such as an ACH debit returned for insufficient funds (NSF). This helps protect your organization and Method from the resulting funding shortfall.
* **Prefunding:** Additional funds that you send to the FBO Account before Method disburses Payments to decrease potential funding hold time.
* **Funding hold:** A delay before disbursement while Method waits for source funds to clear.

Method confirms the requirements for your program during implementation.

## Set up FBO funding

<Steps>
  <Step title="Confirm the funding method">
    Method confirms whether you push funds to the FBO Account or Method pulls funds from your verified disbursement Account.
  </Step>

  <Step title="Receive the FBO instructions">
    Method provides the required Account IDs, funding instructions, and operating schedule.
  </Step>

  <Step title="Check each destination">
    Confirm that `payment` is in the liability Account's `products` before you create a Payment.
  </Step>

  <Step title="Create the Payments">
    Call [`POST /payments`](/reference/payments/create). For push funding, use the FBO-backed Account as `source`. For pull funding, use the verified disbursement Account as `source`.
  </Step>

  <Step title="Fund the FBO Account">
    For push funding, send funds by ACH or wire. For pull funding, Method initiates the ACH debit after you create the Payment.
  </Step>
</Steps>

<Warning>
  Seeing `payment` in an Account's `products` list means that the Account is eligible for Payments. Method checks eligibility and your team's setup again when you create each Payment. A listed product does not guarantee that the create request will succeed.
</Warning>

## Reconcile

1. For push funding, compare the [Managed Account](/reference/managed-accounts/overview) `available_balance` with `payments.outstanding_summary.push_daily`. Use `payments.outstanding_itemized.push_daily` to identify the included Payments.
2. For pull funding, use `payments.outstanding_summary.pull_daily` and `payments.outstanding_itemized.pull_daily`. Retrieve each Payment to check `source_status`, `source_settlement_date`, and `source_trace_id`.
3. Use [`POST /reports`](/reference/reports/create) for an on-demand report, or configure [Report Schedules](/reference/report-schedules/overview) to generate the reports on each banking day.
4. For push funding, use `team_fbo_balance.created.previous_day` and `reversals.push_funded.previous_day` for prior-day activity.
5. Consume `payment.create` and `payment.update` [webhooks](/reference/webhooks/overview). Treat `sent` as the terminal status for successful Payment delivery, and continue to handle later status changes.

## Handle returned funds

Returned funds go to the Payment's `reversal_account`. If you set `reversal_account` in `POST /payments`, that Account is used. Otherwise, Method uses your team's configured reversal Account when one is set, or the Payment's source Account.

For push funding, returned funds that go to the FBO-backed source Account can fund later Payments. If Method must configure another reversal Account, contact Method and provide that Account's ACH details.
