API

Link account

Create+link manual or link bank/crypto to a box, with optional alerts.

Funds a box (AccountLink). Same id pattern as investments (groupId + source): pass source + accountId. Manual: omit accountId and pass name + currency (+ optional balance) to create and link in one step. Bank/crypto: accountId is the snapshot id from list_bank_connections / list_crypto_connections accounts[]. Optional creditAccountId for a bank card + payment pair. Optional alertSettings on any source. OAuth connect stays in-app.

POST/v1/link_account

Body

FieldTypeRequiredDefaultDescription
idempotencyKeystringYes—Client-generated key (1–128 chars: letters, digits, . _ : -). Same key + same body replays; different body returns 409. Prefer Idempotency-Key HTTP header when calling the Tools API.
budgetIdstringYes—Budget that owns the box.
boxIdstringYes—Box to fund.
sourcestringYes—manual, bank, or crypto.
namestringConditional—Manual: display name for the new payment account (create+link).
currencystringConditional—Manual: ISO 4217 currency code for the new payment account.
balancenumberNo0Manual: starting payment balance.
accountKindstringNocheckingManual: kind for the payment account.
accountIdstringConditional—Account id for this source: existing manual id, or bank/crypto snapshot id from connections list. Omit on manual create+link (use name/currency).
paymentModestringNoaccountManual: account or creditCard.
creditNamestringNo—Manual creditCard: credit account display name.
creditCurrencystringNo—Manual creditCard: credit account currency (defaults to currency).
creditBalancenumberConditional—Manual creditCard: required starting credit balance.
creditCycleEndDaynumberNo—Manual creditCard: cycle end day 1–31.
creditAccountIdstringNo—Bank: credit-card snapshot id when pairing with accountId as payment.
alertSettingsobjectNo—Optional box account alerts — see alertSettings below.

alertSettings

Optional object of box account alerts (same rules as in-app Accounts setup). Omit to leave alerts unset on link_account. On update_account, pass null to clear all alerts. Only rules with enabled: true are stored; disabled-only objects are dropped.

FieldTypeRequiredDefaultDescription
balanceThresholdobjectNo—Fire when the funding balance crosses a threshold.
balanceThreshold.enabledbooleanNofalseTurn the threshold alert on.
balanceThreshold.amountnumberConditional—Threshold amount in the account currency (required when enabled).
balanceThreshold.directionstringNobelowbelow (balance drops under amount) or above (balance rises over amount).
insufficientForPlanobjectNo—Fire when the funding balance cannot cover upcoming planned expenses in the box.
insufficientForPlan.enabledbooleanNofalseTurn the insufficient-for-plan alert on.
creditExceedsPaymentobjectNo—Credit-card links only: fire when the card balance exceeds the linked payment account balance.
creditExceedsPayment.enabledbooleanNofalseTurn the credit-exceeds-payment alert on.

Response data

FieldTypeDescription
budgetIdstringId of the budget this resource belongs to.
boxIdstringId of the parent expense box.
sourcestringmanual, bank, or crypto.
accountLinkIdstringAccountLink id written on the box.
paymentModestringaccount or creditCard.
accountIdstringPayment account id (manual id or bank/crypto snapshot id).
creditAccountIdstringCredit account id when paymentMode is creditCard.
alertSettingsobjectPersisted alert rules (null when none enabled).