Bulk Funding

Bulk Funding is the process of consolidating multiple customer deposits and withdrawals into a single transfer to DriveWealth, which is then allocated to individual brokerage accounts. This method helps reduce transfer costs and lowers the risk of transaction failures.


📘

Is bulk right for your company?

Bulk Funding is well-suited for companies or third-party providers (such as banking-as-a-service platforms) that can aggregate multiple customer deposits and withdrawals into a single transfer to or from DriveWealth. If you or your provider have the capability to custody and transfer customer funds, bulk funding is likely the ideal solution.

❗️

Travel Rule Requirement

For accounts trading in a Bulk capacity, DriveWealth requires the Travel rule details sent for every deposit and withdrawal request made.
To learn more about this see: Travel Rule

Depositing

The deposit flow starts by indicating how much money will be transferred for each individual customer account

POST /back-office/funding/deposits

{
  "accountNo": "DWBG000052",
  "amount": 100.00,
  "currency": "USD",
  "type": "BULK_FUNDING",
  "bankAccountID": "bank_a4656e60-321e-425b-aa0d-a2e75c38885f",
  "settlementProfileID": "settlement-profile-1"  //optional
}

This API can be utilized throughout the day to support additional customer deposit requests.

Although customers may not have settled money in their brokerage Account, DriveWealth can still allow them to trade on funds in transit. This is often referred to as Instant Trading.

🚧

Instant trading requires Margin Accounts with 1:1 leverage

Instant Trading can only be used with Margin Accounts with 1:1 leverage (see Enabling leverage). Why? Cash accounts are subject to Good Faith Violations. If a Cash account buys assets with funds that are in transit, then sells those assets before the funds arrive, they are subject to GFVs and can be subject to restriction or even closure.

With Instant Trading, after using the Create Deposit API, certain cash values in the account will update while others remain unchanged. For instance, if an account starts with a $0 balance and you create a $200 BULK_FUNDING deposit, the Retrieve Money Details by Account API will reflect the following changes:

GET /back-office/accounts/{accountID}/summary/money
{
  "accountID": "cc07f91b-7ee1...",
  "accountNo": "DWBG000052",
  "tradingType": "MARGIN",
  "updated": "2022-12-25T18:41:32.440Z",
  "cash": {
    "cashAvailableForTrade": 200.0,
    "cashAvailableForWithdrawal": 0,
    "cashBalance": 0,
    "noBuyingPowerReason": [],
    "cashSettlement": [],
    "pendingPaymentsAmount": 200.0
  },
  "payments": {
    "buyingPower": {
      "pendingDepositsAmountAvailable": 200.0,
      "pendingDepositsAmountNotAvailable": 0
    },
    "redemptions": {
      "amountWithheldFromRedemptions": 0
    }
  }
}

As shown, the funds are immediately available for trading but not yet available for withdrawal. The withdraw-able balance will increase once the funds are physically received by DriveWealth.

Withdrawing

The withdrawal flow starts by indicating how much money will be transferred out for each individual customer

POST /back-office/funding/redemptions
{
  "accountNo": "DWBG000052",
  "amount": 100.00,
  "currency": "USD",
  "type": "BULK_FUNDING",
  "bankAccountID": "bank_a4656e60-321e-425b-aa0d-a2e75c38885f",
  "settlementProfileID": "settlement-profile-1"  //optional
}

This API will continue to be used throughout the rest of the day for more customers who wish to withdraw funds.

NOTE: Managed accounts will follow a similar waiting period as described under Advisor Withdrawal Flow Cycle

Settlements

Under this settlement method, deposits and withdrawals from multiple customer accounts are aggregated at the organization level. These transactions are then netted to calculate a single daily settlement amount.

🚧

NOTE: Your firm may be using only the bulk deposit or bulk withdrawal side of the settlement process; however, this settlement method applies in either case.

If only the deposit component is used, DriveWealth will aggregate all deposits and generate the settlement report. Your firm will be responsible for remitting the total settlement amount to DriveWealth on a T+1 basis.

If only the withdrawal component is used, DriveWealth will aggregate all withdrawals and generate the report. DriveWealth will then remit the total settlement amount to your firm on a T+1 basis.

Retrieving Settlement Reports

You can retrieve a list of all settlements over a given period by using the Retrieve Settlements API

{
  "pageSize": 1,
  "limit": 50,
  "settlements": [
    {
      "id": "sett_63ccb073-a7b6-4b33-af77-5baec5cc4494_20221224",
      "settlementDate": "2022-12-25",
      "partnerID": "80f9b672-120d-4b73-9cc9-42fb3262c4b9",
      "status": "APPROVED",
      "totalAmount": -14250,
      "createdAt": "2022-12-11T22:28:21.810Z",
      "updatedAt": "2022-12-11T22:28:21.810Z"
    },
   {
      "id": "sett_63ccb073-a7b6-4b33-af77-5baec5cc4494_20221225",
      "settlementDate": "2022-12-26",
      "partnerID": "80f9b672-120d-4b73-9cc9-42fb3262c4b9",
      "status": "PENDING",
      "totalAmount": -250,
      "createdAt": "2022-12-12T22:28:21.810Z",
      "updatedAt": "2022-12-12T22:28:21.810Z"
    }
  ]
}

Further, you can drill down into a particular settlement by using the Retrieve Settlement by ID API and passing in the settlement idfrom the previous API response.

{
  "id": "sett_63ccb073-a7b6-4b33-af77-5baec5cc4494",
  "settlementDate": "2022-12-25",
  "status": "APPROVED",
  "statusComment": "Finished processing breakdown",
  "amount": {
    "total": 5000.45,
    "credits": 6000.45,
    "debits": -1000
  },
  "breakdownReport": "https://du2c4wzqz90h1.cloudfront.net/singleSettlementReport....",
  "partnerID": "80f9b672-120d-4b73-9ccv9-42fb3262c4b9",
  "updatedBy": "SYSTEM",
  "createdAt": "2022-12-11T22:28:21.810Z",
  "updatedAt": "2022-12-11T22:28:21.810Z"
}

The breakdownReport will provide ALL the underlying deposits & withdrawals in the client accounts.

{
  "id": "sett_90fc14cc-cf3f-448b-ab43-7a9411683d11_20250502",
  "summary": {
    "totalAmount": 1118.23,
    "credits": 2132.82,
    "debits": -1014.59,
    "ancillary": {
      "depositAmounts": 2133.5,
      "withdrawalAmounts": -1015.27
    }
  },
  "breakdown": [
    {
      "accountID": "65a43a7a-b31c-4d97-9663-494fdb0079e9.1715933938944",
      "accountNo": "GTNZ000019",
      "userID": "65a43a7a-b31c-4d97-9663-494fdb0079e9",
      "amount": 0.85,
      "transactions": [
        {
          "amount": 0.17,
          "type": "CREDIT",
          "category": "DEPOSIT",
          "finTranID": null,
          "details": {
            "orderID": null,
            "orderNo": null,
            "depositID": "GTNZ000019-1746095683497-DU6ZK",
            "withdrawalID": null,
            "originatingFinTranID": null
          },
          "created": "2025-05-01T10:34:43.497Z"
        },
        {
          "amount": 0.17,
          "type": "CREDIT",
          "category": "DEPOSIT",
          "finTranID": null,
          "details": {
            "orderID": null,
            "orderNo": null,
            "depositID": "GTNZ000019-1746095701894-DVBEF",
            "withdrawalID": null,
            "originatingFinTranID": null
          },
          "created": "2025-05-01T10:35:01.894Z"
        },
        {
          "amount": 0.17,
          "type": "CREDIT",
          "category": "DEPOSIT",
          "finTranID": null,
          "details": {
            "orderID": null,
            "orderNo": null,
            "depositID": "GTNZ000019-1746097323033-DMBNS",
            "withdrawalID": null,
            "originatingFinTranID": null
          },
          "created": "2025-05-01T11:02:03.033Z"
        },.....
        }
    ]
}
}
}

Settlement Statuses, Timelines & Events

  1. DriveWealth system starts aggregating deposits and withdrawals under a partner environment starting at 8PM ET. As soon as we start the computing process, a settlement object is created with the status PENDING.
    This generates a settlements.created event as documented here: Settlements Created Event with status PENDING.
  2. All deposits and withdrawals are aggregated over a 24 hr period (from 8 PM ET to 8 PM ET), following which we compute and publish the breakdownReportwhich can retrieved from the settlement object. The status of the report moves to an APPROVEDstatus, also generating a settlements.updatedevent with the APPROVEDstatus as documented here: Settlements Updated Event. The settlements amounts are finalized at this point and are due for settlement.
    Settlement Direction:
    If credits > debits, ie, total> 0, the organization owes DriveWealth the net amount.
    If credits < debits, ie, total < 0 DriveWealth owes the organization the net amount.
  3. Once settlement wires are received(latest by 1:30 PM ET) or remitted by DriveWealth(latest by 12 noon ET) , the settlement is deemed completed and the status of the settlement object is moved to SUCCESSFUL, which also further generates a settlements.completed event with the SUCCESSFULstatus as documented here: Settlements Completed Event. This further creates terminal Deposit(CSR) and withdrawal(CSD) transactions on the customer accounts

🇺🇸

Market/Bank holiday schedule

Settlements are only processed when U.S. banks are open

On market holidays and weekends, deposits and withdrawals made from 8 PM ET on the day before the holiday through the non-business days are aggregated and settled on the next business day.
For example, if markets are closed for Memorial Day (the last Monday of May), all transactions from Thursday 8 PM ET through Monday 8 PM ET are combined. The settlement report is generated end-of-day Monday for settlement on Tuesday morning.

Double settlement day - When U.S. banks are closed but markets remain open, you'll receive daily settlement reports as usual, but the actual settlements are deferred.
For instance, if Veterans Day falls on a Tuesday, you'll get reports for both Monday and Tuesday. However, since Tuesday is a bank holiday, settlements for both days will occur on Wednesday.

Bulk Settlement Profiles

DriveWealth allows Partners using Bulk Funding to segment customer deposits and withdrawals into distinct settlement profiles based on factors such as lines of business (LOBs), banking relationships, and regions. Each profile receives a unique settlementID, separate settlement numbers, and DriveWealth generates a dedicated set of events for each profile.

Default Profile: If only one settlement preference is configured, the default profile is used automatically. This applies to most Partners.
Custom Profiles: Partners with multiple regions or business units can request additional settlementProfileIDs to manage settlements independently.
Contact DriveWealth Support to set up custom settlement profiles as needed.

When making deposit requests, ensure you pass the appropriate settlementProfileID

{
  "accountNo": "SPFY0000052",
  "amount": 250.25,
  "currency": "USD",
  "type": "BULK_FUNDING",
  "bankAccountID": "bank_a4656e60-321e-425b-aa0d-a2e75c38885f",
  "settlementProfileID": "spendify-mexico"
  ...
}

When making withdrawal requests, ensure you pass the appropriate settlementProfileID

{
  "accountNo": "SPFY000053",
  "amount": 100.25,
  "currency": "USD",
  "type": "BULK_FUNDING",
  "bankAccountID": "bank_a4656e60-321e-425b-aa0d-a2e75c38885f",
  "settlementProfileID": "spendify-india"
  ...
}

If using Settlement profiles, Settlement reports will include settlementProfileID for each individual settlement profile.

[
  {
    "id": "DP_cb3321ec-93cc-4b41-b641-0b0c2d44918a_20230816",
    "date": "2023-08-16",
    "partnerID": "80f9b672-120d-4b73-9cc9-42fb3262c4b9",
    "status": "APPROVED",
    "statusComment": "Finished processing breakdown",
    "totalAmount": -14250,
    "created": "2023-08-16T22:28:21.810Z",
    "updated": "2023-08-16T22:28:21.810Z",
    "updatedBy": "SYSTEM",
    "category": "DEPOSIT",
    "settlementProfileID": "spendify-mexico"
  },
  {
    "id": "DP_cc472507-6aee-4b47-95a8-3b00114042fe_20230816",
    "date": "2023-08-16",
    "partnerID": "80f9b672-120d-4b73-9cc9-42fb3262c4b9",
    "status": "APPROVED",
    "statusComment": "Finished processing breakdown",
    "totalAmount": 2000.10,
    "created": "2023-08-16T22:28:21.810Z",
    "updated": "2023-08-16T22:28:21.810Z",
    "updatedBy": "SYSTEM",
    "category": "WITHDRAWAL",
    "settlementProfileID": "spendify-mexico"
  },
  {
    "id": "SM_0f84b177-5f94-4271-9e26-500500159065_20230816",
    "date": "2023-08-16",
    "partnerID": "80f9b672-120d-4b73-9cc9-42fb3262c4b9",
    "status": "APPROVED",
    "statusComment": "Finished processing breakdown",
    "totalAmount": 100,
    "created": "2023-08-16T22:28:21.810Z",
    "updated": "2023-08-16T22:28:21.810Z",
    "updatedBy": "SYSTEM",
    "category": "WITHDRAWAL",
    "settlementProfileID": "spendify-india"
  },
  {
    "id": "SM_d19c7418-67ea-4dc7-9453-2cf09f9efe6b_20230816",
    "date": "2023-08-16",
    "partnerID": "80f9b672-120d-4b73-9cc9-42fb3262c4b9",
    "status": "APPROVED",
    "statusComment": "Finished processing breakdown",
    "totalAmount": -1000,
    "created": "2023-08-16T22:28:21.810Z",
    "updated": "2023-08-16T22:28:21.810Z",
    "updatedBy": "SYSTEM",
    "category": "DEPOSIT",
    "settlementProfileID": "spendify-india"
  }
]