All Docs
FeaturesagentOS Direct DebitUpdated March 13, 2026

How the Funds Sweep Works: Modulr → Griffin Holding

How the Funds Sweep Works: Modulr → Griffin Holding

Available from: v1.0.43

Once a BACS collection transitions to collected, the service automatically sweeps the funds out of the Modulr collection account and into the organisation's Griffin DD holding account. This step is fully automated and event-driven — no manual intervention is required.

Overview

The sweep is the third stage of the fund flow:

  1. Mandate setup
  2. BACS collection (funds land in Modulr)
  3. Sweep to Griffin holding accountthis page
  4. Hold period (clawback protection)
  5. Forward to agent's client account

Trigger

The sweep is initiated by an Inngest background function that reacts to the collected status on a collection record. There is no manual step and no cron job — as soon as the collection is confirmed, the sweep begins.

What Happens Step by Step

  1. Collection transitions to collected — Modulr confirms that funds have been debited from the tenant's bank account and are sitting in the Modulr collection account.

  2. Inngest function fires — The event triggers the sweep function automatically.

  3. holding_transaction row created — A record is written to the database immediately with status sweeping. This ensures the movement is captured for audit purposes even before Griffin confirms receipt.

  4. Payment leg initiated — The service calls Griffin's payment API to transfer the exact collected amount from the Modulr collection account to the org's Griffin DD holding account.

  5. Griffin confirms asynchronously — Griffin processes the payment and sends a confirmation webhook. On receipt, the holding_transaction status transitions from sweepingheld.

  6. Audit log updated — All fund movement is logged for full traceability.

holding_transaction Statuses

StatusMeaning
sweepingSweep has been initiated; payment leg is in flight
heldGriffin has confirmed receipt; funds are now in the holding account

Reliability & Idempotency

  • The holding_transaction record is written before Griffin confirms, so no movement is lost if the process is interrupted mid-flight.
  • Griffin's async confirmation handler is idempotent — re-delivered webhooks will not produce duplicate status transitions or double-counted records.
  • Inngest provides built-in retry logic for the sweep function, ensuring transient failures are automatically retried.

Amounts

The sweep always transfers the exact collected amount — no rounding, no fees deducted at this stage. The amount is taken directly from the confirmed collection record.

What Comes Next

Once funds reach held status in the Griffin holding account, the hold period begins. During this window:

  • Funds are protected against BACS clawbacks
  • The clawback reserve requirement is evaluated
  • After the hold period (default: 24 hours) and once the reserve is satisfied, funds are forwarded to the agent's Griffin client account

See the Hold Period & Clawback Reserve documentation for details on the next stage.