Update many transactions
Apply the same change to every transaction that matches
filters, and get the updated transactions back. With linkedPlannedTransactionId and no linkedOccurrenceDate, each transaction pays the occurrence nearest its own date.Request body
filtersobjectrequired
Same filters as list transactions.
accountIdnullable string
Single account.
accountIdsnullable array of strings
Several accounts.
transactionCategoryIdsnullable array of strings
Filter by category. Include null for uncategorized.
merchantIdsnullable array of strings
Filter by merchant.
searchnullable string
Search description and merchant name.
fromDatenullable string
Inclusive start date.
toDatenullable string
Inclusive end date.
transactionTypesnullable array of enums
debit and/or credit.excludeTransfersnullable boolean
Drop internal transfers.
excludeArchivednullable boolean
Drop archived transactions.
excludeParentTransactionsnullable boolean
Drop split parents (keep the children).
hasLinkedPlannedTransactionnullable boolean
true for transactions linked to any planned transaction, false for those linked to none.linkedPlannedTransactionIdsnullable array of strings
Transactions linked to any of these planned transactions. In the query string of list transactions, the URL's length limit (about 8 KB) allows about 150 ids. The request body of update many transactions takes up to 10,000.
dataobjectrequired
The fields to change, as in update a transaction.
transactionCategoryIdnullable string
Category to assign.
merchantIdnullable string
Merchant to assign.
transactionTagIdsarray of strings
Tag ids to assign.
linkedPlannedTransactionIdnullable string
Planned transaction these pay. It must be one of yours.
null unlinks them.linkedOccurrenceDatenullable string
Which occurrence of the planned transaction this pays, as
yyyy-MM-dd. It must be a date the planned transaction falls due, within its activeFrom and endDate, or the request fails with 400. Omitted, the occurrence nearest the transaction's effectiveDate, else its date, is stored. Needs linkedPlannedTransactionId in the same request.POST/transactions/update
curl https://api.finwiseapp.io/transactions/update \-X POST \-H "Authorization: Bearer fw_..." \-H "Content-Type: application/json" \-d '{"filters":{"merchantIds":["d4dd1cbe-d349-4089-ad63-b98921426656"]},"data":{"linkedPlannedTransactionId":"aa1bb2cc-dd3e-4f50-a162-27488990abcd","linkedOccurrenceDate":"2026-03-14"}}'
const response = await fetch('https://api.finwiseapp.io/transactions/update', {method: 'POST',headers: {Authorization: 'Bearer fw_...','Content-Type': 'application/json',},body: JSON.stringify({"filters": {"merchantIds": ["d4dd1cbe-d349-4089-ad63-b98921426656"]},"data": {"linkedPlannedTransactionId": "aa1bb2cc-dd3e-4f50-a162-27488990abcd","linkedOccurrenceDate": "2026-03-14"}}),})const data = await response.json()
Response
[{"id": "9da3aab1-be6c-4e6a-9b03-fd50e9aca541","createdAt": "2026-03-14T14:18:22.304Z","updatedAt": "2026-03-14T14:18:22.304Z","description": "Walmart","originalDescription": "WALMART STORE 1234","accountId": "94d2f962-d4e3-4c99-ab47-8c941cea012a","amount": {"amount": -56.12,"currencyCode": "USD"},"date": "2026-03-14T00:00:00.000Z","effectiveDate": null,"transactionCategoryId": "a00cb43b-ab06-447c-8aeb-527680b20a50","merchantId": "d4dd1cbe-d349-4089-ad63-b98921426656","parentTransactionId": null,"splits": null,"isManual": true,"isTransfer": null,"notes": null,"userId": "f472696c-47ac-4873-98cf-2a1069a1cf45","archivedAt": null,"needsReview": null,"isPending": false,"pendingTransactionId": null,"linkedPlannedTransactionId": "aa1bb2cc-dd3e-4f50-a162-27488990abcd","linkedOccurrenceDate": "2026-03-14","archiveReason": null,"transactionTags": [],"fileRecords": []}]