A money market account is a higher-yield savings product with tiered interest rates and a Regulation D-style cap on monthly withdrawals (typically six). The savings sub-module under /banking/money-market/* covers account creation, deposits, withdrawals, sweep configuration, and the cron jobs that accrue and pay interest.
Accounts
Create
/banking/money-market/accountsJWT{
"holderId": "holder_abc",
"productId": "default",
"linkedAccountId": "acc_checking_abc",
"initialDeposit": 5000.00
}
Creates a money market account linked to a regular bank account for funding. The linked account is where deposits are pulled from and where interest is paid (or where withdrawals land).
Read
/banking/money-market/accounts/{accountId}JWT/banking/money-market/holder/{holderId}JWTThe latter returns all money market accounts for a holder.
Deposits and withdrawals
Deposit
/banking/money-market/accounts/{accountId}/depositJWT{
"amount": 1000.00,
"source": {
"type": "internal_transfer",
"accountId": "acc_checking_abc",
"description": "Monthly savings contribution"
}
}
Pulls funds from the linked checking account via internal transfer and credits the money market account. Posts a balanced journal entry: debit checking, credit money market.
Withdraw
/banking/money-market/accounts/{accountId}/withdrawJWT{
"amount": 500.00,
"destination": {
"type": "internal_transfer",
"accountId": "acc_checking_abc",
"description": "Withdrawal to checking"
}
}
Increments the monthly withdrawal counter on the account. After six withdrawals in a calendar month (configurable per product), further withdrawals are rejected until the counter resets on the 1st.
Auto-sweep
Sweep moves excess balance between checking and money market on a schedule. Useful for keeping working capital in a high-yield account while preserving a target balance for day-to-day spending.
/banking/money-market/accounts/{accountId}/sweepJWT{
"sourceAccountId": "acc_checking_abc",
"targetBalance": 5000.00,
"sweepThreshold": 1000.00,
"sweepFrequency": "weekly"
}
| Field | Type | Description |
|---|---|---|
| sourceAccountId* | string | The linked checking account. |
| targetBalance* | number | Desired balance in checking after sweep. |
| sweepThreshold* | number | Minimum excess required to trigger a sweep. Excess = checking balance - targetBalance. If excess < threshold, no move. |
| sweepFrequency* | 'daily' | 'weekly' | 'monthly' | How often the sweep job runs against this account. |
The actual sweep runs as a scheduled job (typically nightly). The endpoint configures the rule; execution happens on cadence.
Rate tiers
Money market rates are tiered by balance — higher balances earn higher APY.
Create a tier
/banking/money-market/rate-tiersJWT{
"productId": "default",
"minBalance": 0,
"maxBalance": 9999.99,
"apy": 3.5
}
Add tiers in increasing balance brackets. The platform picks the right tier per account at accrual time based on the average daily balance for the period.
Get tiers
/banking/money-market/rate-tiersJWT?productId=default. Returns the configured tier ladder.
Interest accrual
Interest accrues daily and pays monthly. Two cron endpoints drive this:
/banking/money-market/admin/accrue-interestJWTRun daily — typically at midnight UTC. Computes one day's interest at the account's current tier rate against current balance, posts an accrual entry to the ledger, and adds to the account's accrued-interest counter.
/banking/money-market/admin/pay-interestJWTRun monthly — typically on the 1st. Capitalises accrued interest into the balance, posts the corresponding journal entry, and resets the accrued counter.
/banking/money-market/admin/reset-withdrawalsJWTRun monthly. Resets each account's withdrawal counter to zero so the Reg D-style cap restarts.
These are admin endpoints — schedule them externally (cron, GitHub Actions, k8s CronJob) or via Automation. The platform does not invoke them on a built-in clock.
Stats
/banking/money-market/statsJWTAggregate totals across the org: account count, total balance, average APY, total interest paid YTD.
Reg D's six-withdrawal limit was suspended by the Federal Reserve in 2020. The platform still enforces a configurable cap because many sponsor banks retain the rule in their account agreements — confirm your sponsor's stance and adjust the per-product limit accordingly.
Standalone savings accounts
The plain savings and business_savings account types from the Accounts module are simpler — no tiered rates, no auto-sweep, no monthly withdrawal cap by default. Use those for basic savings products and the money market endpoints when you need yield tiers and sweep automation.