Docs

Type to search every page.

AI assistants

Tool reference

Every tool an AI assistant can use in Budget Smugglers: 129 in all, 61 that only read and 68 that make changes.

These are the tools your assistant gets when you connect it. With read-only access it only sees the ones marked read. Full access adds thewrite ones. None of them can delete anything.

You don't call these yourself. Ask in plain English and the assistant picks the tools it needs. See things to ask for ideas.

What your assistant is told when it connects
Budget Smugglers is a personal budgeting app. These tools read and change one person's budgeting data: accounts, transactions, categories and rules, budgets, savings goals, bills and income, loans, savings accounts and term deposits (interest and bonus conditions), super and retirement funds (contribution caps, employer contributions, projections), assets like a home or car (valuations, equity), share and crypto portfolios (holdings, trades, delayed prices, capital gains by financial year), notifications, forecasts and reports.

- Pools: data belongs to a pool. If the person is in more than one, call list_pools and pass poolId to every other tool; with only one it can be left out.
- Money: amounts are decimal strings in the currency shown alongside them, e.g. "-113.89". Transactions are negative for money out; report spending totals are positive. Pass amounts back as decimal strings too.
- Businesses: accounts can belong to a business. Reports, budgets and forecasts take a scope ("personal", "all", "business" or a business id); left out, the pool's default applies, which is usually personal. Ask for "all" when the person wants everything.
- Pooled: someone with a household pool and a business pool can see both together with pooled_summary and pooled_net_worth. Money moved between the pools (like owner's drawings) is left out there.
- Dates are calendar dates (YYYY-MM-DD) in the pool's timezone, and months are YYYY-MM.
- Ids are UUIDs: look them up with the list and search tools rather than guessing.
- Changes are recorded in the pool's audit log under the person's name. Nothing can be deleted here; deleting is done in the app.

Pools, accounts and businesses#

list_poolsread

The pools (budgets) you belong to, with your role and permissions in each. Pass a pool's id as poolId to the other tools when you belong to more than one.

list_accountsread

Bank accounts, cards, loans and other accounts, with current balances. businessId says which business an account belongs to (null for personal).

1 input
poolIduuidWhich pool; optional if you only have one
create_accountwrite

Add an account. openingBalance is a decimal string in the account currency, e.g. "1250.00". For an account that is already closed (an old loan, say), pass openedOn and closedOn.

13 inputs
namerequiredstring
typeone of: transaction, savings, offset, credit_card, loan, mortgage, investment, term_deposit, retirement, cash, other, asset
institutionstring
currencyrequiredstring
openingBalancestring
externalRefstring
bankLabelstring
accountNumberstring
openedOnstring
closedOnstring
notesstring
businessIduuid
poolIduuidWhich pool; optional if you only have one
update_accountwrite

Rename an account, change its type or notes, set its bank account number (used to match transfers that mention it), move it into a business (businessId, or null for personal), or archive it. Set closedOn (YYYY-MM-DD) when an account was closed: it is archived and drops out of net worth after that month. openedOn limits net worth history the same way at the start.

14 inputs
namestring
typeone of: transaction, savings, offset, credit_card, loan, mortgage, investment, term_deposit, retirement, cash, other, asset
institutionstring
openingBalancestring
externalRefstring
bankLabelstring
accountNumberstring
openedOnstring
closedOnstring
notesstring
businessIduuid
archivedboolean
accountIdrequireduuid
poolIduuidWhich pool; optional if you only have one
set_account_ownerswrite

Say who holds an account and when (people from list_people). Replaces the account's periods; from/to are inclusive YYYY-MM-DD, null for open-ended, and periods can't overlap. Transactions in a period become that person's unless a rule or a hand-set split says otherwise. Pass an empty list to clear.

3 inputs
periodsrequiredlist of object
accountIdrequireduuid
poolIduuidWhich pool; optional if you only have one
list_businessesread

Businesses in the pool. Their accounts are kept out of personal reports, budgets and forecasts unless you ask for them with a report's scope.

1 input
poolIduuidWhich pool; optional if you only have one
create_businesswrite

Add a business (a company, partnership or sole trader). Then move its accounts in with update_account.

3 inputs
namerequiredstring
notesstring
poolIduuidWhich pool; optional if you only have one
update_businesswrite

Rename a business, change its notes, or archive it.

5 inputs
namestring
notesstring
archivedboolean
businessIdrequireduuid
poolIduuidWhich pool; optional if you only have one

Transactions#

search_transactionsread

Transactions newest first, filtered by account, dates, text, category or person. Amounts are negative for money out; people shows who each one belongs to. Returns a page; pass nextCursor back to get more.

10 inputs
accountIduuid
fromstringFirst date to include, YYYY-MM-DD
tostringLast date to include, YYYY-MM-DD
searchstringText in the description, payee or notes
categoryIduuidAlso matches its subcategories
personIduuid or "none"Only transactions with a share for this person (from list_people), or "none" for nobody's
uncategorisedbooleanOnly transactions without a category (transfers excluded)
limitwhole number
cursorstringnextCursor from the previous page
poolIduuidWhich pool; optional if you only have one
get_transactionread

One transaction in full.

2 inputs
transactionIdrequireduuid
poolIduuidWhich pool; optional if you only have one
create_transactionwrite

Record a transaction by hand, e.g. a cash purchase. amount is a decimal string, negative for money out ("-42.50").

7 inputs
accountIdrequireduuid
daterequiredstring
amountrequiredstring
descriptionrequiredstring
payeestring
notesstring
poolIduuidWhich pool; optional if you only have one
update_transactionwrite

Change a transaction's category, payee or notes (or, for transactions added by hand, its date, amount and description). Set applyToSimilar to also recategorise other uncategorised transactions from the same merchant and remember the choice.

10 inputs
categoryIduuid
applyToSimilarboolean
payeestring
notesstring
descriptionstring
datestring
amountstring
locationobject or "none" or "auto"
transactionIdrequireduuid
poolIduuidWhich pool; optional if you only have one
uncategorised_merchantsread

Uncategorised transactions grouped by merchant, most transactions first, with each group's total, date range and transaction ids. Use it to categorise a backlog: pick a category per merchant, then categorise_transactions with its ids (or create_rule for merchants that will keep turning up). Transfers are left out.

5 inputs
accountIduuid
fromstringFirst date to include, YYYY-MM-DD
tostringLast date to include, YYYY-MM-DD
limitwhole numberHow many merchants to return
poolIduuidWhich pool; optional if you only have one
categorise_transactionswrite

Set (or clear, with categoryId null) the category of several transactions at once.

3 inputs
idsrequiredlist of uuid
categoryIdrequireduuid
poolIduuidWhich pool; optional if you only have one
auto_categorisewrite

Run rules, remembered merchants and transfer detection over uncategorised transactions, the same as the Categorise button. Rules with people also split transactions not split by hand.

1 input
poolIduuidWhich pool; optional if you only have one

Categories and rules#

list_categoriesread

Spending, income and transfer categories, with subcategories under their parents.

1 input
poolIduuidWhich pool; optional if you only have one
create_categorywrite

Add a category, or a subcategory by giving a parentId.

4 inputs
namerequiredstring
parentIduuid
kindone of: expense, income, transfer
poolIduuidWhich pool; optional if you only have one
update_categorywrite

Rename, move, reorder or archive a category, or set whether its spending counts as essential or lifestyle (spendGroup; null follows the default).

8 inputs
namestring
parentIduuid
kindone of: expense, income, transfer
archivedboolean
sortOrderwhole number
spendGroupone of: essential, lifestyle
categoryIdrequireduuid
poolIduuidWhich pool; optional if you only have one
list_rulesread

Categorisation rules, in the order they are tried (lowest priority number first).

1 input
poolIduuidWhich pool; optional if you only have one
preview_ruleread

Which existing transactions a rule would match, without saving it. Amount conditions compare the absolute value; add {"field":"direction","op":"equals","value":"out"} (or "in") to match only money out (or in).

3 inputs
matchone of: all, any
conditionsrequiredlist of object
poolIduuidWhich pool; optional if you only have one
create_rulewrite

Add a rule that categorises matching transactions, links them to a loan (loanId: money out is a repayment, money in a redraw), splits them between people (people), or any mix. It applies to new imports; call apply_rule to run it over existing transactions. Amounts match regardless of sign; a direction condition (value "in" or "out") limits it to money in or out. Lines of {personId, kind, value}: kind "amount" takes a fixed amount off the top (value "1000.00"), kind "percent" a percentage of what's left after the amounts (value "50"). A person can have one of each. Anything left over is shared (nobody's in particular).

11 inputs
namerequiredstring
prioritywhole number
enabledboolean
matchone of: all, any
conditionsrequiredlist of object
categoryIduuid
setPayeestring
loanIduuid
peoplelist of object
setLocationobject or "none"
poolIduuidWhich pool; optional if you only have one
update_rulewrite

Change a rule's conditions, category, loan, people, priority, or switch it off.

12 inputs
namestring
prioritywhole number
enabledboolean
matchone of: all, any
conditionslist of object
categoryIduuid
setPayeestring
loanIduuid
peoplelist of object
setLocationobject or "none"
ruleIdrequireduuid
poolIduuidWhich pool; optional if you only have one
apply_rulewrite

Run a rule over existing transactions: recategorise the ones it matches, link them to its loan and split them between its people, if it has them.

2 inputs
ruleIdrequireduuid
poolIduuidWhich pool; optional if you only have one

People#

list_peopleread

The people in the pool (with or without a login), for splitting income and spending between them. Super members are people too.

1 input
poolIduuidWhich pool; optional if you only have one
create_personwrite

Add someone to the pool, like a partner or a kid. userId links a pool member with a login.

6 inputs
namerequiredstring
userIdstring
dateOfBirthstring
showAgeboolean
notesstring
poolIduuidWhich pool; optional if you only have one
update_personwrite

Rename someone, link their login, set their date of birth, keep their age off charts (showAge false), or archive them.

8 inputs
namestring
userIdstring
dateOfBirthstring
showAgeboolean
notesstring
archivedboolean
personIdrequireduuid
poolIduuidWhich pool; optional if you only have one
set_transaction_peoplewrite

Say whose transactions these are. Lines of {personId, kind, value}: kind "amount" takes a fixed amount off the top (value "1000.00"), kind "percent" a percentage of what's left after the amounts (value "50"). A person can have one of each. Anything left over is shared (nobody's in particular). Pass lines [] to make them nobody's, or null to hand them back to the rules. Splits set here stick: rules leave them alone.

3 inputs
linesrequiredlist of object
idsrequiredlist of uuid
poolIduuidWhich pool; optional if you only have one

Milestones#

list_milestonesread

Dated events the pool marks on its charts, earliest first. One with an endDate is a span; it counts if any of it falls in the range. kind is "life" (a new job, a baby, moving house), "financial" (bought the car, paid off a loan), "world" (a lockdown, rate rises) or "other". Ones kept off charts and reports are left out unless includeHidden.

4 inputs
fromstringFirst date, YYYY-MM-DD
tostringLast date, YYYY-MM-DD
includeHiddenboolean
poolIduuidWhich pool; optional if you only have one
create_milestonewrite

Mark an event on the pool's charts. kind is "life" (a new job, a baby, moving house), "financial" (bought the car, paid off a loan), "world" (a lockdown, rate rises) or "other". Give endDate for something that lasted a while. personId (from list_people) says whose it is. showInReports false keeps it off charts and reports.

8 inputs
titlerequiredstring
daterequiredstring
endDatestring
kindone of: life, financial, world, other
personIduuid
notesstring
showInReportsboolean
poolIduuidWhich pool; optional if you only have one
update_milestonewrite

Change a milestone, or keep it off charts and reports with showInReports false.

9 inputs
titlestring
datestring
endDatestring
kindone of: life, financial, world, other
personIduuid
notesstring
showInReportsboolean
milestoneIdrequireduuid
poolIduuidWhich pool; optional if you only have one

Places#

find_placesread

Towns, suburbs and cities by name (from the built-in place list), for setting where transactions happened or for a rule. Places in the pool’s own country come first.

3 inputs
qrequiredstring
limitwhole number
poolIduuidWhich pool; optional if you only have one
set_transaction_locationwrite

Say where transactions happened: {placeId} from find_places, "none" for nowhere in particular (like a subscription), or "auto" to have it worked out from the bank’s description again. Places set here stick: rules and automation leave them alone.

3 inputs
idsrequiredlist of uuid
locationrequiredobject or "none" or "auto"
poolIduuidWhich pool; optional if you only have one
spending_by_placeread

Where money was spent (or, with direction "in", came from) between two dates: totals by town and by country, with coordinates, plus how much has no location. Amounts are positive.

5 inputs
fromrequiredstringFirst date, YYYY-MM-DD
torequiredstringLast date, YYYY-MM-DD
scopeone of: personal, all, business or uuidWhich accounts: "personal" (accounts not in a business), "all", "business" (every business account) or a business id from list_businesses. Leave it out for the pool's default.
directionone of: out, in
poolIduuidWhich pool; optional if you only have one

Budgets and goals#

get_budget_monthread

Budgets for a month: each category with its budget, spending, rollover and what is left, plus month totals. Spending is positive.

3 inputs
monthrequiredstringYYYY-MM
scopeone of: personal, all, business or uuidWhich accounts: "personal" (accounts not in a business), "all", "business" (every business account) or a business id from list_businesses. Leave it out for the pool's default.
poolIduuidWhich pool; optional if you only have one
set_budgetwrite

Set a category's monthly budget from fromMonth onwards (earlier months keep their old amount). amount is a positive decimal string. rollover carries unspent money into the next month.

5 inputs
categoryIdrequireduuid
amountrequiredstring
rolloverboolean
fromMonthrequiredstring
poolIduuidWhich pool; optional if you only have one
list_goalsread

Savings goals with progress, status and the monthly amount needed to reach each by its date. Pass personId for one person’s goals.

2 inputs
personIduuid
poolIduuidWhich pool; optional if you only have one
get_goalread

One savings goal with its contributions.

2 inputs
goalIdrequireduuid
poolIduuidWhich pool; optional if you only have one
create_goalwrite

Add a savings goal, shared or for one person (personId, from list_people). Link an accountId to track that account’s growth, set netWorth to aim for a net worth (includeSuper to count super), or record contributions by hand with add_goal_contribution.

10 inputs
namerequiredstring
targetAmountrequiredstring
targetDatestring
personIduuid
accountIduuid
netWorthboolean
includeSuperboolean
currencystring
notesstring
poolIduuidWhich pool; optional if you only have one
update_goalwrite

Change a goal's name, whose it is, target, date or notes (or whether a net worth goal counts super), or archive it.

9 inputs
namestring
targetAmountstring
targetDatestring
personIduuid
includeSuperboolean
notesstring
archivedboolean
goalIdrequireduuid
poolIduuidWhich pool; optional if you only have one
add_goal_contributionwrite

Record money put towards a goal (negative to take some back out).

5 inputs
daterequiredstring
amountrequiredstring
notestring
goalIdrequireduuid
poolIduuidWhich pool; optional if you only have one

Bills and forecast#

list_billsread

Recurring bills and income (pay, rent, subscriptions) with their schedule and next due date.

1 input
poolIduuidWhich pool; optional if you only have one
upcoming_billsread

Due dates of bills and income between two dates, and whether each was paid, skipped, late or is still expected. Defaults to recent and upcoming weeks.

3 inputs
fromstring
tostring
poolIduuidWhich pool; optional if you only have one
bill_suggestionsread

Recurring payments found in the transactions that aren't tracked as bills or income yet.

1 input
poolIduuidWhich pool; optional if you only have one
create_billwrite

Track a recurring bill or income. amount is positive either way; kind says which direction. matchText is text that the matching transactions contain, so payments are ticked off automatically.

15 inputs
namerequiredstring
kindrequiredone of: bill, income
accountIdrequireduuid
categoryIduuid
amountrequiredstring
tolerancePercentwhole number
frequencyrequiredone of: once, weekly, fortnightly, monthly, quarterly, yearly
intervalwhole number
startDaterequiredstring
endDatestring
lastDayOfMonthboolean
weekendone of: none, before, after
matchTextstring
notesstring
poolIduuidWhich pool; optional if you only have one
update_billwrite

Change a bill or income: amount, schedule, account, category, or switch it off with active false.

17 inputs
namestring
kindone of: bill, income
accountIduuid
categoryIduuid
amountstring
tolerancePercentwhole number
frequencyone of: once, weekly, fortnightly, monthly, quarterly, yearly
intervalwhole number
startDatestring
endDatestring
lastDayOfMonthboolean
weekendone of: none, before, after
matchTextstring
notesstring
activeboolean
itemIdrequireduuid
poolIduuidWhich pool; optional if you only have one
mark_bill_occurrencewrite

Mark one due date of a bill or income as paid (optionally linking the transaction), skipped, or back to expected.

5 inputs
dueDaterequiredstring
statusrequiredone of: paid, skipped, expected
transactionIduuid
itemIdrequireduuid
poolIduuidWhich pool; optional if you only have one
get_forecastread

Projected balances day by day from bills, income, loan repayments and (optionally) typical day-to-day spending, with warnings where an account would go below zero. exclude takes bill or loan ids to try a what-if without them.

5 inputs
dayswhole number
excludelist of uuid
variablebooleanInclude typical day-to-day spending
scopeone of: personal, all, business or uuidWhich accounts: "personal" (accounts not in a business), "all", "business" (every business account) or a business id from list_businesses. Leave it out for the pool's default.
poolIduuidWhich pool; optional if you only have one

Reports#

spending_summaryread

Income, spending and savings rate between two dates, by month and by category, plus the top merchants and income by person. Spending amounts are positive. Transfers between your own accounts are left out, except money moving across the scope (e.g. drawings from a business count as personal income).

6 inputs
fromrequiredstringFirst date, YYYY-MM-DD
torequiredstringLast date, YYYY-MM-DD
accountslist of uuidOnly these accounts (overrides scope)
scopeone of: personal, all, business or uuidWhich accounts: "personal" (accounts not in a business), "all", "business" (every business account) or a business id from list_businesses. Leave it out for the pool's default.
personuuid or "none"Only this person's share of each transaction (from list_people), or "none" for the share nobody has
poolIduuidWhich pool; optional if you only have one
net_worthread

Total of account balances at the end of each month, overall and per account. months "all" reaches back to the first transaction. With personId (someone with a date of birth, from list_people), byAge also gives net worth at each of their birthdays and the change over each year of age.

4 inputs
months"all" or whole number
scopeone of: personal, all, business or uuidWhich accounts: "personal" (accounts not in a business), "all", "business" (every business account) or a business id from list_businesses. Leave it out for the pool's default.
personIduuidAlso give net worth by this person’s age
poolIduuidWhich pool; optional if you only have one
pooled_summaryread

Income and spending across several of your pools at once (e.g. your household and your business), by month, category and pool. Money moved between the pools, like owner's drawings, is left out. Pools in another currency are skipped.

3 inputs
fromrequiredstringFirst date, YYYY-MM-DD
torequiredstringLast date, YYYY-MM-DD
poolIdslist of uuidPools to combine (from list_pools). Leave it out for your saved choice, or every pool you can.
pooled_net_worthread

Net worth across several of your pools at once, month by month, overall and per pool.

2 inputs
monthswhole number
poolIdslist of uuidPools to combine (from list_pools). Leave it out for your saved choice, or every pool you can.
year_by_yearread

Where each financial year’s income went: essential spending, lifestyle spending (uncategorised included), paying off debt (transfers into loan accounts and spending filed as loan repayments) and what was saved. Whether a category is essential is set per category (update_category spendGroup).

3 inputs
yearswhole number
scopeone of: personal, all, business or uuidWhich accounts: "personal" (accounts not in a business), "all", "business" (every business account) or a business id from list_businesses. Leave it out for the pool's default.
poolIduuidWhich pool; optional if you only have one
spending_by_dayread

Total spending on each day between two dates (days with none are left out). Amounts are positive.

4 inputs
fromrequiredstringFirst date, YYYY-MM-DD
torequiredstringLast date, YYYY-MM-DD
scopeone of: personal, all, business or uuidWhich accounts: "personal" (accounts not in a business), "all", "business" (every business account) or a business id from list_businesses. Leave it out for the pool's default.
poolIduuidWhich pool; optional if you only have one
balance_rangeread

An account’s lowest, highest and closing end-of-day balance each week, and the buffer to stay above: set by hand, or worked out as the lesser of a typical week’s spending and the level the balance stayed above three weeks in four.

3 inputs
accountIdrequireduuid
weekswhole number
poolIduuidWhich pool; optional if you only have one
money_healthread

Six measures for the last 12 months and the 12 before: emergency fund (months of essential spending covered by cash), savings rate, essentials as a share of income, debt to income, budgets kept and bills on time. Each has a target, set in the app or worked out to be a third of the way from last year to the usual rule of thumb, and a 0-1 score against it.

2 inputs
scopeone of: personal, all, business or uuidWhich accounts: "personal" (accounts not in a business), "all", "business" (every business account) or a business id from list_businesses. Leave it out for the pool's default.
poolIduuidWhich pool; optional if you only have one

Loans#

list_loansread

Loans with balance, rate, repayment, offset and payoff date: home, car and personal loans, and money lent to others (direction 'lent' = owed to you). A loan shared with another pool shows sharedWith.

1 input
poolIduuidWhich pool; optional if you only have one
get_loanread

One loan in full: terms, offsets, phases (interest-only, fixed periods) and current figures.

2 inputs
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
loan_ratesread

Interest rate history, including suggested changes inferred from statements awaiting confirmation.

2 inputs
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
loan_transactionsread

Transactions linked to a loan and their role (repayment, interest, fee, redraw…).

2 inputs
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
loan_historyread

Month by month: balance owed, offset, interest actually charged and the interest expected.

2 inputs
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
loan_projectionread

Payoff projection as things are, under a what-if scenario (extra repayments for a stretch, lump sums, offset changes, a rate change or a rate path over time), and with no offset. Shows payoff dates, total interest and each date the repayment changes (repaymentSteps) so scenarios can be compared.

12 inputs
loanIdrequireduuid
offsetone of: current, trend, nonecurrent = offset stays where it is; trend = keeps changing like the last 6 months; none = no offset
offsetMonthlystringAdded to the offset each month
extrastringExtra on top of each repayment
extraFromstringWhen the extra starts (default today)
extraTostringWhen the extra stops (default never)
lumpSumslist of object
rateChangestringChange in interest rate, in percentage points, e.g. "0.25". Moves fixed rates too.
rateChangeFromstring
ratePathlist of objectRates over time instead of rateChange: the change from today's rate by each date, ramped monthly in between and held after. Fixed periods hold until they end.
keepRepaymentbooleanKeep paying today's repayment even if the minimum drops
poolIduuidWhich pool; optional if you only have one
loan_draftread

Guess a loan's terms from a loan account's transaction history, to fill in create_loan.

2 inputs
accountIdrequireduuid
poolIduuidWhich pool; optional if you only have one
create_loanwrite

Set up a loan on a loan account. Amounts are decimal strings and rates are percentages like "5.84". Use loan_draft first to get sensible values. For money lent to someone, set direction 'lent' and ledgerMode 'modelled': give the account a positive opening balance (what's owed to you); repayments are money coming in.

24 inputs
kindone of: home, investment, car, personal, other
originalPrincipalrequiredstring
startDaterequiredstring
termMonthsrequiredwhole number
repaymentFrequencyone of: weekly, fortnightly, monthly
firstRepaymentDaterequiredstring
firstInterestDaterequiredstring
repaymentPolicyone of: recalculate, fixed_amount
recalcNoticeDayswhole number
dayBasis365 or 360
balloonstring
monthlyFeestring
annualFeestring
annualFeeDatestring
fundingAccountIduuid
scheduledItemIduuid
ledgerModeone of: imported, modelled
revertRatestring
notesstring
accountIdrequireduuid
directionone of: borrowed, lent
initialRatestring
offsetslist of object
poolIduuidWhich pool; optional if you only have one
update_loanwrite

Change a loan's name, terms, fees, funding account or notes. On a shared loan the name is this pool's own.

22 inputs
kindone of: home, investment, car, personal, other
originalPrincipalstring
startDatestring
termMonthswhole number
repaymentFrequencyone of: weekly, fortnightly, monthly
firstRepaymentDatestring
firstInterestDatestring
repaymentPolicyone of: recalculate, fixed_amount
recalcNoticeDayswhole number
dayBasis365 or 360
balloonstring
monthlyFeestring
annualFeestring
annualFeeDatestring
fundingAccountIduuid
scheduledItemIduuid
ledgerModeone of: imported, modelled
revertRatestring
notesstring
namestring
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
set_loan_offsetswrite

Replace the accounts that offset this loan (and how much of each balance counts).

3 inputs
offsetsrequiredlist of object
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
add_loan_phasewrite

Add a period such as interest-only, with an optional repayment override.

6 inputs
typerequiredone of: interest_only, principal_and_interest
startDaterequiredstring
endDatestring
repaymentOverridestring
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
update_loan_phasewrite

Change a loan phase's dates, type or repayment override.

7 inputs
typeone of: interest_only, principal_and_interest
startDatestring
endDatestring
repaymentOverridestring
loanIdrequireduuid
phaseIdrequireduuid
poolIduuidWhich pool; optional if you only have one
add_loan_ratewrite

Record an interest rate change from a date, e.g. "6.09" from 2026-11-01.

6 inputs
effectiveDaterequiredstring
raterequiredstring
rateTypeone of: variable, fixed
fixedUntilstring
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
update_loan_ratewrite

Correct a rate, or confirm or dismiss a suggested rate change.

8 inputs
effectiveDatestring
ratestring
rateTypeone of: variable, fixed
fixedUntilstring
statusone of: confirmed, dismissed, suggested
loanIdrequireduuid
rateIdrequireduuid
poolIduuidWhich pool; optional if you only have one
infer_loan_rateswrite

Look through the statements again for interest rate changes, and suggest any found.

2 inputs
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
classify_loan_transactionswrite

Work out each of the loan account's transactions' role (repayment, interest, fee…) again.

2 inputs
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
close_loanwrite

Record that a loan was paid out (discharged) on a date. payoutAmount is everything it took, fees included; payoutFees is the discharge and break costs within it. The loan and its account close: no projections after that date. For a loan whose statements are not imported (modelled), the estimated balance is tied to the payout figure, and a rate that fits it is suggested if none is confirmed. To record moving to a new loan, use refinance_loans instead.

5 inputs
closedOnrequiredstring
payoutAmountrequiredstring
payoutFeesstring
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
reopen_loanwrite

Undo a payout recorded with close_loan.

2 inputs
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
refinance_loanswrite

Record old loans being paid out by new ones on a settlement date (e.g. a split NAB loan refinanced to one Macquarie loan). Set up every loan first (create_loan; an old loan without statements can be ledgerMode 'modelled'). The old loans close with their payout figures; offsets, the funding account and the repayment bill move to the first new loan unless it has its own. The payouts and the new loans' drawdowns are filed as Transfers.

5 inputs
settledOnrequiredstring
fromrequiredlist of object
torequiredlist of uuid
notesstring
poolIduuidWhich pool; optional if you only have one
get_loan_refinanceread

One refinance: what each old loan was paid out at, what the new loans drew, and the difference.

2 inputs
refinanceIdrequireduuid
poolIduuidWhich pool; optional if you only have one
undo_loan_refinancewrite

Undo a refinance: the old loans reopen and what moved to the new loan moves back.

2 inputs
refinanceIdrequireduuid
poolIduuidWhich pool; optional if you only have one
share_loanwrite

Put the other side of this loan into another pool: the lender sees it as owed to them, the borrower as a debt. It's one loan; either side can change it and link their own payments. With toPoolId (another pool you belong to) it's shared straight away. Without it, you get a link for someone else's pool; it lasts 7 days and a new one replaces the last. Only modelled loans without offsets can be shared.

4 inputs
loanIdrequireduuid
toPoolIduuidAnother pool you belong to: shares straight into it, no link needed (see list_pools)
accountNamestringWith toPoolId: name for the account there
poolIduuidWhich pool; optional if you only have one
accept_loan_sharewrite

Accept a share link (from share_loan) into this pool. A new loan account is created here that mirrors the loan, so payments in this pool can be linked to it.

3 inputs
tokenrequiredstringThe share link, or just its token
accountNamestring
poolIduuidWhich pool; optional if you only have one
unshare_loanwrite

Stop sharing a loan, from either side. The other pool's copy of the loan account goes, and its payments come unlinked.

2 inputs
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one
loan_chainread

Every loan linked to this one by refinances as one history: owed and interest each month, rates per loan, each refinance, and what refinancing has saved compared with staying put.

2 inputs
loanIdrequireduuid
poolIduuidWhich pool; optional if you only have one

Savings, term deposits and notifications#

list_savingsread

Savings accounts and term deposits with interest tracking: balance, base/bonus/intro rate, bonus cap, projected interest over the next 12 months, maturity, and this period’s bonus-condition status.

1 input
poolIduuidWhich pool; optional if you only have one
get_savingsread

One savings account or term deposit in full: terms, rate history (including suggestions), bonus conditions and the current tracker.

2 inputs
savingsIdrequireduuid
poolIduuidWhich pool; optional if you only have one
savings_statusread

Whether each bonus condition is met, on track, at risk or missed this period (or another period with savingsId + period "YYYY-MM" / "YYYY-Qn"), from what has happened so far plus scheduled bills and income. At-risk conditions come with what to do: transfer an amount by a date, hold off a withdrawal, or make more card purchases. topUps combine deposit shortfalls into one transfer per account. Without savingsId, covers every tracked account.

3 inputs
savingsIduuid
periodstring
poolIduuidWhich pool; optional if you only have one
savings_historyread

Period by period: whether the bonus conditions held, interest actually credited against what the base and base+bonus rates would pay, the effective rate, and bonus interest lost in missed periods.

2 inputs
savingsIdrequireduuid
poolIduuidWhich pool; optional if you only have one
savings_projectionread

Compounding growth projection: the expected path (scheduled deposits, this period’s bonus as tracked, later bonuses met), a what-if scenario, and the scenario with every bonus met vs on the base rate alone, so the value of keeping the conditions is clear. Term deposits project to maturity.

10 inputs
savingsIdrequireduuid
contributionstringExtra regular deposit on top of scheduled ones
frequencyone of: weekly, fortnightly, monthly
lumpSumslist of object
rateChangestringChange in rate, in percentage points, e.g. "-0.25"
rateChangeFromstring
monthswhole number
targetstringReport when the balance reaches this
bonusone of: expected, always, never
poolIduuidWhich pool; optional if you only have one
savings_draftread

Guess a savings account’s rate and interest day from its interest credits, to fill in create_savings.

2 inputs
accountIdrequireduuid
poolIduuidWhich pool; optional if you only have one
savings_transactionsread

The account’s transactions with how each is tagged (interest, bonus interest, excluded from conditions…).

2 inputs
savingsIdrequireduuid
poolIduuidWhich pool; optional if you only have one
create_savingswrite

Set up interest tracking on a savings, term deposit or other account that holds money. Rates are percentages like "5.50" with a component of "base", "bonus" (only paid when the conditions hold; maxBalance caps it) or "intro" (replaces both until endDate). For a term deposit set kind "term_deposit", interestFrequency "at_maturity" (or how it's paid), startDate, maturityDate and maturityInstruction. When reading a product's terms, turn its bonus requirements into conditions: Each condition is one object, and the bonus is paid only in periods where every enabled condition holds. Money is a decimal string in the account's currency. "accountId" is optional and defaults to the savings account itself; set it to watch a linked account instead (e.g. card purchases on the everyday account, or deposits into a linked transaction account). - {"type":"min_deposits","amount":"1000","minEach":null,"source":"any"}: deposit at least this much each period. source: "any" (own transfers count), "external" (only money from outside the pool, e.g. salary), "exclude_same_institution" (transfers from the same bank don't count). minEach: each deposit must be at least this. - {"type":"balance_growth","minIncrease":"0.01","excludeInterest":true}: end the period higher than it started ("0.01" = any growth). excludeInterest: interest paid doesn't count towards it (most banks). - {"type":"max_withdrawals","count":0,"maxTotal":null}: at most this many withdrawals (0 = none), optionally capped in total. - {"type":"min_card_purchases","count":5,"descriptionPattern":null,"accountId":"<everyday account>"}: at least this many settled card purchases (spending that isn't a transfer), optionally only rows matching a regex. - {"type":"min_balance","amount":"5000","basis":"period_end"}: keep at least this much, checked "daily" or at "period_end". Rules that aren't about the period's activity (age limits, one account per person, needing a linked account at all) aren't conditions; put them in the account's notes. A bonus that only applies up to a balance is a rate cap, not a condition: use add_savings_rate with component "bonus" and maxBalance.

18 inputs
kindone of: savings, term_deposit
dayBasis365 or 360
interestFrequencyone of: monthly, quarterly, annually, at_maturity
interestDaywhole number
interestMonthwhole number
conditionPeriodone of: month, quarter
clearingDayswhole number
payoutAccountIduuid
principalstring
startDatestring
maturityDatestring
maturityReminderDayswhole number
maturityInstructionone of: rollover_all, rollover_principal, payout
notesstring
accountIdrequireduuid
rateslist of object
conditionslist of object
poolIduuidWhich pool; optional if you only have one
update_savingswrite

Change how interest is paid, the transfer clearing time, term deposit details or notes.

16 inputs
kindone of: savings, term_deposit
dayBasis365 or 360
interestFrequencyone of: monthly, quarterly, annually, at_maturity
interestDaywhole number
interestMonthwhole number
conditionPeriodone of: month, quarter
clearingDayswhole number
payoutAccountIduuid
principalstring
startDatestring
maturityDatestring
maturityReminderDayswhole number
maturityInstructionone of: rollover_all, rollover_principal, payout
notesstring
savingsIdrequireduuid
poolIduuidWhich pool; optional if you only have one
set_savings_conditionswrite

Replace a savings account's bonus conditions with this list (send them all; an empty list removes them). Each condition is one object, and the bonus is paid only in periods where every enabled condition holds. Money is a decimal string in the account's currency. "accountId" is optional and defaults to the savings account itself; set it to watch a linked account instead (e.g. card purchases on the everyday account, or deposits into a linked transaction account). - {"type":"min_deposits","amount":"1000","minEach":null,"source":"any"}: deposit at least this much each period. source: "any" (own transfers count), "external" (only money from outside the pool, e.g. salary), "exclude_same_institution" (transfers from the same bank don't count). minEach: each deposit must be at least this. - {"type":"balance_growth","minIncrease":"0.01","excludeInterest":true}: end the period higher than it started ("0.01" = any growth). excludeInterest: interest paid doesn't count towards it (most banks). - {"type":"max_withdrawals","count":0,"maxTotal":null}: at most this many withdrawals (0 = none), optionally capped in total. - {"type":"min_card_purchases","count":5,"descriptionPattern":null,"accountId":"<everyday account>"}: at least this many settled card purchases (spending that isn't a transfer), optionally only rows matching a regex. - {"type":"min_balance","amount":"5000","basis":"period_end"}: keep at least this much, checked "daily" or at "period_end". Rules that aren't about the period's activity (age limits, one account per person, needing a linked account at all) aren't conditions; put them in the account's notes. A bonus that only applies up to a balance is a rate cap, not a condition: use add_savings_rate with component "bonus" and maxBalance.

3 inputs
conditionsrequiredlist of object
savingsIdrequireduuid
poolIduuidWhich pool; optional if you only have one
add_savings_ratewrite

Record a rate from a date: component "base", "bonus" or "intro" (with endDate). minBalance/maxBalance make it apply to that slice of the balance only (tiers, bonus caps).

8 inputs
componentone of: base, bonus, intro
effectiveDaterequiredstring
endDatestring
raterequiredstring
minBalancestring
maxBalancestring
savingsIdrequireduuid
poolIduuidWhich pool; optional if you only have one
update_savings_ratewrite

Correct a rate, or confirm or dismiss a rate suggested from the interest credits.

10 inputs
componentone of: base, bonus, intro
effectiveDatestring
endDatestring
ratestring
minBalancestring
maxBalancestring
statusone of: confirmed, dismissed, suggested
savingsIdrequireduuid
rateIdrequireduuid
poolIduuidWhich pool; optional if you only have one
infer_savings_rateswrite

Work out the rate from the interest credits again and suggest any change found.

2 inputs
savingsIdrequireduuid
poolIduuidWhich pool; optional if you only have one
tag_savings_transactionwrite

Tag a transaction in the savings account: "interest" or "bonus_interest" (counted as interest, so it can be left out of balance growth), "excluded" (ignored by the conditions, e.g. a bank correction), "deposit" or "withdrawal".

4 inputs
rolerequiredone of: interest, bonus_interest, deposit, withdrawal, excluded
savingsIdrequireduuid
transactionIdrequireduuid
poolIduuidWhich pool; optional if you only have one
plan_savings_transferwrite

Book a transfer the person intends to make into the savings account (as a pair of one-off scheduled items), so the forecast and the bonus tracker count it until the real transfer imports. It doesn’t move any money; say so.

5 inputs
fromAccountIdrequireduuid
amountrequiredstring
daterequiredstring
savingsIdrequireduuid
poolIduuidWhich pool; optional if you only have one
list_notificationsread

The person’s in-app notifications for this pool: savings bonuses at risk or missed, term deposits maturing, money over a bonus cap, late bills and accounts forecast to dip below zero. Current items first; resolved ones have resolvedAt set.

3 inputs
currentbooleanOnly items that are still true
limitwhole number
poolIduuidWhich pool; optional if you only have one
mark_notifications_readwrite

Mark notifications read, by id or {"all": true}.

3 inputs
idslist of uuid
alltrue
poolIduuidWhich pool; optional if you only have one

Super#

list_retirementread

Everyone with a super (retirement) fund in the pool: date of birth, salary, funds and balances, this financial year’s concessional contributions against the cap, whether employer contributions are arriving on time, and each fund’s fees and insurance as charged (feesFromHistory).

1 input
poolIduuidWhich pool; optional if you only have one
get_retirement_memberread

One person’s super details and funds.

2 inputs
memberIdrequireduuid
poolIduuidWhich pool; optional if you only have one
retirement_capsread

Concessional (employer, salary sacrifice, deducted personal) and non-concessional contributions for a financial year (e.g. "2026-27", default this one) against the caps, with carry-forward of unused cap, bring-forward, what’s expected by 30 June, and a Division 293 flag. Years before the history starts need totals entered (update_retirement_member priorConcessional).

3 inputs
fystring
memberIdrequireduuid
poolIduuidWhich pool; optional if you only have one
retirement_sg_checkread

Did the employer’s super contributions arrive, and on time? Each payday since 1 July 2026 (payday super: due 7 business days after payday) or each quarter before then, with what was owed, what arrived and when. Needs a salary and a linked pay on the member.

4 inputs
fromstring
tostring
memberIdrequireduuid
poolIduuidWhich pool; optional if you only have one
retirement_projectionread

Projects a member’s super to retirement (never before preservation age), by financial year, in future and today’s dollars. What-ifs: extraConcessional and extraNonConcessional (per year), returnRate (percent, after fees and tax), inflation, wageGrowth, retirementAge. Also the actual month-end balances so far.

8 inputs
extraConcessionalstring
extraNonConcessionalstring
returnRatestring
inflationstring
wageGrowthstring
retirementAgewhole number
memberIdrequireduuid
poolIduuidWhich pool; optional if you only have one
retirement_returnsread

Investment returns (after fees) per financial year across a member’s funds, worked out from balances and contributions, with a suggested return to assume in projections.

2 inputs
memberIdrequireduuid
poolIduuidWhich pool; optional if you only have one
retirement_transactionsread

A fund’s transactions with what each one is (employer, salary_sacrifice, personal_concessional, personal_non_concessional, contributions_tax, fees, insurance, earnings, rollover_in…), newest first. Balance updates show as adjustments.

2 inputs
fundIdrequireduuid
poolIduuidWhich pool; optional if you only have one
create_retirement_memberwrite

Adds a person whose super is tracked: name, dateOfBirth, retirementAge, ruleset ("au" for Australian super, "none" for a plain retirement fund), salaryAnnual (before salary sacrifice), salarySacrificeAnnual, employerRate (only if above the legal minimum), payScheduleId (their pay in Bills & income).

14 inputs
personIduuid
namestring
userIdstring
dateOfBirthstring
retirementAgewhole number
rulesetone of: au, none
salaryAnnualstring
salarySacrificeAnnualstring
employerRatestring
payScheduleIduuid
priorConcessionalobject
tsbOverrideobject
notesstring
poolIduuidWhich pool; optional if you only have one
update_retirement_memberwrite

Changes a member’s details. priorConcessional {"2024-25":"27500"} enters concessional totals for years before the history starts, so carry-forward counts them; tsbOverride does the same for total balances on 30 June.

14 inputs
namestring
userIdstring
dateOfBirthstring
retirementAgewhole number
rulesetone of: au, none
salaryAnnualstring
salarySacrificeAnnualstring
employerRatestring
payScheduleIduuid
priorConcessionalobject
tsbOverrideobject
notesstring
memberIdrequireduuid
poolIduuidWhich pool; optional if you only have one
create_retirement_fundwrite

Tracks an account as a super fund for a member (memberId, or member to add one at the same time). Optional starting balance {date, amount}, fees (adminFeeAnnual, feePercent, insuranceAnnual) and assumedReturn for projections; with no fees set, projections use what the fund has been charging. The account becomes a retirement account.

12 inputs
fundNamestring
primaryboolean
adminFeeAnnualstring
feePercentstring
insuranceAnnualstring
assumedReturnstring
notesstring
accountIdrequireduuid
memberIduuid
memberobject
balanceobject
poolIduuidWhich pool; optional if you only have one
update_retirement_fundwrite

Changes a fund’s fees, assumed return, name, member or whether it’s the primary fund.

10 inputs
fundNamestring
primaryboolean
adminFeeAnnualstring
feePercentstring
insuranceAnnualstring
assumedReturnstring
notesstring
memberIduuid
fundIdrequireduuid
poolIduuidWhich pool; optional if you only have one
record_retirement_balancewrite

Records a fund balance on a date (from a statement or the fund’s website). The first sets the starting balance; later ones book whatever the transactions don’t explain as returns.

4 inputs
daterequiredstring
balancerequiredstring
fundIdrequireduuid
poolIduuidWhich pool; optional if you only have one
tag_retirement_transactionwrite

Says what a fund transaction is. Use personal_concessional for a personal contribution once a notice of intent to claim a deduction has gone to the fund.

4 inputs
rolerequiredone of: employer, salary_sacrifice, personal_concessional, personal_non_concessional, spouse, government, contributions_tax, fees, insurance, earnings, rollover_in, rollover_out, withdrawal, other
fundIdrequireduuid
transactionIdrequireduuid
poolIduuidWhich pool; optional if you only have one

Assets#

list_assetsread

Things owned that count in net worth but aren’t money in a bank: homes, cars, other valuables. Each has today’s value (currentValue; estimated is true when it’s projected from the yearly rate after the latest valuation), its value a year ago, linked loans with what’s owed, equity and LVR.

1 input
poolIduuidWhich pool; optional if you only have one
get_assetread

One asset with its valuations and month-end history of value and debt since it was bought (up to ten years).

2 inputs
assetIdrequireduuid
poolIduuidWhich pool; optional if you only have one
asset_forecastread

Month by month from now: the asset’s value (at its yearly rate, or growth to try another) against what its linked loans will owe on their current projections, with equity and LVR. crossings gives the month it first drops to 80% and 60% LVR, and to its targetLvr if set.

4 inputs
growthstring
yearswhole number
assetIdrequireduuid
poolIduuidWhich pool; optional if you only have one
asset_costsread

What an asset costs to own, month by month over the last `months` full months and estimated for the next 12: interest and fees on its linked loans, costs and income from the categories picked for it, and how its value moved. net = interest + fees + costs − income − valueChange; below zero it earned more than it cost. For a rental (income categories or an investment loan), yield gives gross, net and cash-on-cash percentages.

3 inputs
monthswhole number
assetIdrequireduuid
poolIduuidWhich pool; optional if you only have one
set_asset_categorieswrite

Replace which categories count toward an asset: role cost for rates, insurance, strata, upkeep; role income for rent. A parent category includes its subcategories. accountId limits a pick to one account, to keep a rental’s costs apart from the home’s when they share a category. Returns the asset_costs result.

3 inputs
categoriesrequiredlist of object
assetIdrequireduuid
poolIduuidWhich pool; optional if you only have one
create_assetwrite

Add a home, car or other valuable. kind is property, vehicle or other. Give purchasedOn and purchasePrice, or value { date, amount } for what it’s worth now, or both. rate is the yearly change used after the latest valuation, as a signed percent ("4" for a home growing 4%, "-15" for a car losing 15%); ask the person rather than assuming. loanIds links mortgages or car loans for equity. Net worth includes it from the purchase date.

16 inputs
namerequiredstring
kindone of: property, vehicle, other
descriptionstring
ratestring
floorstring
purchasedOnstring
purchasePricestring
notesstring
targetLvrstring
cashInvestedstring
businessIduuid
accountIduuid
currencystring
valueobject
loanIdslist of uuid
poolIduuidWhich pool; optional if you only have one
update_assetwrite

Change an asset’s details or rate, or set targetLvr (percent) to see when it gets there in asset_forecast. To record a sale, pass soldOn and salePrice: it drops out of net worth from that day.

15 inputs
namestring
kindone of: property, vehicle, other
descriptionstring
ratestring
floorstring
purchasedOnstring
purchasePricestring
notesstring
targetLvrstring
cashInvestedstring
businessIduuid
soldOnstring
salePricestring
assetIdrequireduuid
poolIduuidWhich pool; optional if you only have one
record_asset_valuationwrite

What an asset was worth on a date (an appraisal, a bank or website estimate). Values between valuations move smoothly from one to the next; a valuation on the same date replaces the old one.

5 inputs
daterequiredstring
amountrequiredstring
notestring
assetIdrequireduuid
poolIduuidWhich pool; optional if you only have one

Shares and crypto#

list_portfoliosread

Share and crypto portfolios (kind) with their market value, cost base, gain and today’s move. Prices are delayed about 15 minutes; pricesAsOf says when. Units and prices are decimal strings in the instrument’s currency; money totals are in the account’s currency.

1 input
poolIduuidWhich pool; optional if you only have one
get_portfolioread

One portfolio: each holding (units, price, value, cost, gain, weight), month-end value against cost, every trade (and which bank transaction paid for it), and gains locked in by sales (realised).

2 inputs
portfolioIdrequireduuid
poolIduuidWhich pool; optional if you only have one
search_instrumentsread

Searches the pool’s price feed by name or code, e.g. "vanguard australian" or "VAS". kind "crypto" searches the crypto feed ("bitcoin", "SUI").

3 inputs
qrequiredstring
kindone of: shares, crypto
poolIduuidWhich pool; optional if you only have one
add_tradewrite

Records a buy, sell or split in a portfolio, or units received or sent without a trade (side receive/give: an airdrop, staking reward, or a deposit or withdrawal). symbol is the code without a suffix ("VAS", "BTC"); exchange defaults to ASX (also NASDAQ, NYSE, LSE, NZX, TSX, CRYPTO for coins, CASH for money held at an exchange, symbol = its currency). units, price and fees are decimal strings in the instrument’s currency, up to 8 decimal places; for a split, units is new per old ("2" for 2-for-1); for receive, price is the cost per unit (0 for an airdrop). externalRef is the broker’s confirmation number, so the trade is never added twice.

14 inputs
symbolrequiredstring
exchangestring
namestring
currencystring
kindone of: share, etf, fund, crypto, cash, other
daterequiredstring
sideone of: buy, sell, split, receive, give
unitsrequiredstring
pricestring
feesstring
externalRefstring
notestring
portfolioIdrequireduuid
poolIduuidWhich pool; optional if you only have one
record_holdingswrite

What a broker says is held on a date: [{ symbol, exchange, units, costPrice? }]. Trades are reconciled to it (units they don’t explain become "held before" or adjustment lines). With complete true (the default), anything not listed counts as sold by that date.

5 inputs
daterequiredstring
holdingsrequiredlist of object
completeboolean
portfolioIdrequireduuid
poolIduuidWhich pool; optional if you only have one
portfolio_tax_reportread

A financial year of one portfolio, or every portfolio in the pool’s currency without portfolioId: holdings at each end, the year’s trades, and each sale matched to the parcels it used up (first in, first out) with cost base, proceeds, gain and days held. fy is the calendar year the financial year ends in (2025 is July 2024 to June 2025 in Australia). Totals take losses off short-term gains first, then the 50% discount off long-term gains for Australian pools. Losses carried in from earlier years aren’t known. Money is minor units.

3 inputs
fyrequiredwhole number
portfolioIduuid
poolIduuidWhich pool; optional if you only have one