{
"errors": [
{
"code": "INVALID_TOKEN",
"details": {},
"message": "The personal API token is not valid.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "INSUFFICIENT_SCOPE",
"details": {
"required_scope": "pfm:transactions:write"
},
"message": "The personal API token does not grant this operation.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "NOT_FOUND",
"details": {},
"message": "The resource does not exist.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "IMMUTABLE_PROVIDER_FIELD",
"details": {
"field": "amount"
},
"message": "The bank owns this field of a connected transaction. It cannot be edited.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "VALIDATION_FAILED",
"details": {
"errors": [
{
"field": "amount",
"message": "must be greater than 0"
}
]
},
"message": "The request body has invalid values. See details.errors.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "RATE_LIMITED",
"details": {
"retry_after_seconds": 42
},
"message": "Too many requests. Retry after the number of seconds in Retry-After.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
Transactions
Edit a transaction
Changes the fields in the body and keeps the others. Requires the pfm:transactions:write scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only category_id, notes, ignored, and tag_ids; any other field returns 409 IMMUTABLE_PROVIDER_FIELD. tag_ids replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.
{
"errors": [
{
"code": "INVALID_TOKEN",
"details": {},
"message": "The personal API token is not valid.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "INSUFFICIENT_SCOPE",
"details": {
"required_scope": "pfm:transactions:write"
},
"message": "The personal API token does not grant this operation.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "NOT_FOUND",
"details": {},
"message": "The resource does not exist.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "IMMUTABLE_PROVIDER_FIELD",
"details": {
"field": "amount"
},
"message": "The bank owns this field of a connected transaction. It cannot be edited.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "VALIDATION_FAILED",
"details": {
"errors": [
{
"field": "amount",
"message": "must be greater than 0"
}
]
},
"message": "The request body has invalid values. See details.errors.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{
"errors": [
{
"code": "RATE_LIMITED",
"details": {
"retry_after_seconds": 42
},
"message": "Too many requests. Retry after the number of seconds in Retry-After.",
"request_id": "F8x2kQ9vXc1AAAAB"
}
]
}
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Visor Personal API","description":"Connect your own scripts and automations to your Visor data with a Pro or Premium personal API token.","colors":{"primary":"#155DFC","light":"#4D8BFF","dark":"#155DFC"},"logo":{"light":"https://mintcdn.com/visorfinance/184cqPrO8BXx_1WV/logo/light-mode.svg?fit=max\u0026auto=format\u0026n=184cqPrO8BXx_1WV\u0026q=85\u0026s=fb4be31a4d2e8c680c4e43c5758216e0","dark":"https://mintcdn.com/visorfinance/184cqPrO8BXx_1WV/logo/dark-mode.svg?fit=max\u0026auto=format\u0026n=184cqPrO8BXx_1WV\u0026q=85\u0026s=a2393d69d9930ccce9264dca21d5cb43","href":"https://visorfinance.app"},"favicon":"https://mintcdn.com/visorfinance/184cqPrO8BXx_1WV/favicon.png?fit=max\u0026auto=format\u0026n=184cqPrO8BXx_1WV\u0026q=85\u0026s=288a9fbcbdc60d057e1e9926ebe46c0e","api":{"playground":{"display":"none"},"examples":{"languages":["curl"]}},"navbar":{"primary":{"type":"button","label":"Create a token","href":"https://dashboard.visorfinance.app/settings/connected_apps"}},"footer":{"socials":{"website":"https://visorfinance.app"}},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","href":"introduction"},{"language":"pt-BR","navbar":{"primary":{"type":"button","label":"Criar um token","href":"https://dashboard.visorfinance.app/settings/connected_apps"}},"href":"pt-BR/introduction"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"visorfinance","hasAudioNarration":false,"actualSubdomain":"visorfinance","customDomains":["docs.visorfinance.app"],"gitSource":{"type":"github","owner":"visor-finance","repo":"visor","deployBranch":"main","contentDirectory":"developer-docs","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ae3cbd2bb770cec1ef5777a","collectionId":"e2f68892-c8f8-418a-b2f6-c12f6567fd5f","liveDeploymentHistoryId":"6ae3cbd2bb770cec1ef5777a","schemaVersion":"v3"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ae3cbd2bb770cec1ef5777a","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"en","tag":"API reference","count":23},{"language":"en","tag":"Guides","count":11},{"language":"pt-BR","tag":"Guias","count":11},{"language":"en","tag":"Get started","count":6},{"language":"en","tag":"Transactions","count":6},{"language":"pt-BR","tag":"Comece aqui","count":6},{"language":"en","tag":"Essentials","count":5},{"language":"pt-BR","tag":"Essencial","count":5},{"language":"en","tag":"Cards","count":2},{"language":"en","tag":"Pix payments","count":2},{"language":"en","tag":"Recurring expenses","count":2},{"language":"en","tag":"Accounts","count":1},{"language":"en","tag":"Categories","count":1}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/transactions/edit-a-transaction","slug":"/api-reference/transactions/edit-a-transaction","pageMetadata":{"title":"Edit a transaction","description":"Changes the fields in the body and keeps the others. Requires the `pfm:transactions:write` scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only `category_id`, `notes`, `ignored`, and `tag_ids`; any other field returns `409 IMMUTABLE_PROVIDER_FIELD`. `tag_ids` replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/spaces/{space_id}/transactions/{transaction_id}","href":"/api-reference/transactions/edit-a-transaction","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Changes the fields in the body and keeps the others. Requires the \", _jsx(_components.code, {\n children: \"pfm:transactions:write\"\n }), \" scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only \", _jsx(_components.code, {\n children: \"category_id\"\n }), \", \", _jsx(_components.code, {\n children: \"notes\"\n }), \", \", _jsx(_components.code, {\n children: \"ignored\"\n }), \", and \", _jsx(_components.code, {\n children: \"tag_ids\"\n }), \"; any other field returns \", _jsx(_components.code, {\n children: \"409 IMMUTABLE_PROVIDER_FIELD\"\n }), \". \", _jsx(_components.code, {\n children: \"tag_ids\"\n }), \" replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Edit a transaction","description":"Changes the fields in the body and keeps the others. Requires the `pfm:transactions:write` scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only `category_id`, `notes`, `ignored`, and `tag_ids`; any other field returns `409 IMMUTABLE_PROVIDER_FIELD`. `tag_ids` replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/spaces/{space_id}/transactions/{transaction_id}","href":"/api-reference/transactions/edit-a-transaction","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"callbacks":{},"description":"Changes the fields in the body and keeps the others. Requires the `pfm:transactions:write` scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only `category_id`, `notes`, `ignored`, and `tag_ids`; any other field returns `409 IMMUTABLE_PROVIDER_FIELD`. `tag_ids` replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.","operationId":"VisorWeb.Api.V1.TransactionController.update","parameters":["5a7847c5-4fd7-4ab9-a4d4-a62e294b2f8d","78d29a73-73ee-45a1-a036-2d63b4c7cce4"],"requestBody":"ba0f39a0-776d-4c96-8785-43d71a8d9e9d","responses":{"200":"2ccc840c-cced-49bb-a2d9-f49f00139f4e","400":"d826617d-043b-43e8-8410-2976505b96bc","401":"980cb024-c366-4981-aeb6-29e4aa70bc06","403":"3761194e-2906-47dc-af8a-8dadd5c42787","404":"b504da8e-1d68-44f7-8189-2a47b8eac5fb","406":"ad58c2db-e823-41a9-9672-0f814ab02f44","409":"ed6b1b47-de27-4a13-a0e0-19c828a89ac8","422":"32fce964-07d8-4a71-b9b6-5ce45e7db373","429":"5b3178ba-7b77-4e8c-bb8d-08158ed60033"},"summary":"Edit a transaction","tags":["Transactions"],"method":"patch","type":"path","servers":["e02cc6e5-1238-4b59-b1fd-3f6cb20e7f31"],"security":["aced51fa-1496-4972-8e33-177415a6c517","8042d3c0-4a4f-42f9-a1af-19c2530d0602"],"path":"/v1/spaces/{space_id}/transactions/{transaction_id}","baseUrlOptions":["https://api.visorfinance.app"],"title":"Edit a transaction","codeSamples":[],"requestExampleLanguages":["bash"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"5a7847c5-4fd7-4ab9-a4d4-a62e294b2f8d":{"description":"A space `id` from `GET /v1/spaces`","in":"path","name":"space_id","required":true,"schema":{"format":"uuid","type":"string","isRequired":true,"description":"A space `id` from `GET /v1/spaces`","uniqueKey":"","typeLabel":"string\u003cuuid>"}},"78d29a73-73ee-45a1-a036-2d63b4c7cce4":{"description":"A transaction `id`","in":"path","name":"transaction_id","required":true,"schema":{"format":"uuid","type":"string","isRequired":true,"description":"A transaction `id`","uniqueKey":"","typeLabel":"string\u003cuuid>"}}},"requestBody":{"content":{"application/json":{"example":{"category_id":"3e9a1b7c-4d2f-4a8e-9b6c-0d1e2f3a4b5c","tag_ids":[]},"schema":{"additionalProperties":false,"properties":{"amount":{"description":"Manual transactions only. Positive decimal string.","format":"decimal","pattern":"^\\d{1,13}(\\.\\d{1,2})?$","type":"string","uniqueKey":"amount","typeLabel":"string\u003cdecimal>"},"category_id":{"format":"uuid","type":"string","uniqueKey":"category_id","typeLabel":"string\u003cuuid>"},"description":{"description":"Manual transactions only","maxLength":255,"minLength":1,"type":"string","uniqueKey":"description","typeLabel":"string"},"ignored":{"type":"boolean","uniqueKey":"ignored","typeLabel":"boolean"},"notes":{"description":"An empty string removes the notes","maxLength":500,"type":"string","uniqueKey":"notes","typeLabel":"string"},"tag_ids":{"description":"Replaces every tag. An empty list removes them.","items":{"format":"uuid","type":"string","uniqueKey":"tag_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"maxItems":20,"type":"array","uniqueKey":"tag_ids","typeLabel":"string\u003cuuid>[]"},"transacted_at":{"description":"Manual transactions only","format":"date-time","type":"string","uniqueKey":"transacted_at","typeLabel":"string\u003cdate-time>"},"type":{"description":"Manual transactions only","enum":["debit","credit"],"type":"string","uniqueKey":"type","typeLabel":"enum\u003cstring>"}},"title":"TransactionUpdateRequest","type":"object","uniqueKey":"","typeLabel":"TransactionUpdateRequest · object"},"examples":{"Example":{"title":"Example","value":{"category_id":"3e9a1b7c-4d2f-4a8e-9b6c-0d1e2f3a4b5c","tag_ids":[]}}},"exampleType":"examples"}},"description":"The fields to change","required":true,"exampleType":"examples"},"responses":{"2ccc840c-cced-49bb-a2d9-f49f00139f4e":{"content":{"application/json":{"example":{"data":{"account_id":"5d3a9c1e-2b4f-4e6a-8c7d-1f0e9b2a3c45","amount":"42.90","category_id":"3e9a1b7c-4d2f-4a8e-9b6c-0d1e2f3a4b5c","created_at":"2026-10-01T15:31:02Z","currency_code":"BRL","description":"Padaria","id":"9c1e4b2a-7d3f-4e8a-b6c5-1a2b3c4d5e6f","ignored":false,"merchant_name":null,"notes":null,"source":"manual","status":"posted","tag_ids":[],"transacted_at":"2026-10-01T15:30:00Z","type":"debit","updated_at":"2026-10-01T15:31:02Z"}},"schema":{"additionalProperties":false,"properties":{"data":{"oneOf":[{"additionalProperties":false,"properties":{"account_id":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.account_id","typeLabel":"string\u003cuuid>"},"amount":{"description":"Absolute amount as a decimal string, in `currency_code`. `type` gives the direction.","example":"42.90","format":"decimal","type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.amount","typeLabel":"string\u003cdecimal>"},"category_id":{"oneOf":[{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.category_id.oneOf.0","typeLabel":"string\u003cuuid>"},{"format":"uuid","type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.category_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.category_id","typeLabel":"string\u003cuuid> | null"},"created_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.created_at","typeLabel":"string\u003cdate-time>"},"currency_code":{"description":"ISO 4217 code","example":"BRL","type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.currency_code","typeLabel":"string"},"description":{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.description","typeLabel":"string"},"id":{"format":"uuid","type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.id","typeLabel":"string\u003cuuid>"},"ignored":{"description":"True when the transaction does not count in totals","type":"boolean","isRequired":true,"uniqueKey":"data.oneOf.0.ignored","typeLabel":"boolean"},"merchant_name":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.merchant_name.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.merchant_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.merchant_name","typeLabel":"string | null"},"notes":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.notes.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"data.oneOf.0.notes.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data.oneOf.0.notes","typeLabel":"string | null"},"source":{"description":"`manual` for a transaction you recorded, `connected` for one that a bank sent, `apple_pay` for one that the Apple Pay shortcut imported, and `pix` for a Pix you paid through Visor while the bank has not sent it yet. Only `manual` accepts edits to every field.","enum":["manual","connected","apple_pay","pix"],"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.source","typeLabel":"enum\u003cstring>"},"status":{"enum":["pending","posted"],"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.status","typeLabel":"enum\u003cstring>"},"tag_ids":{"items":{"format":"uuid","type":"string","uniqueKey":"data.oneOf.0.tag_ids.items.[INDEX]","typeLabel":"string\u003cuuid>"},"type":"array","isRequired":true,"uniqueKey":"data.oneOf.0.tag_ids","typeLabel":"string\u003cuuid>[]"},"transacted_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.transacted_at","typeLabel":"string\u003cdate-time>"},"type":{"description":"`debit` for money out, `credit` for money in","enum":["debit","credit"],"type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.type","typeLabel":"enum\u003cstring>"},"updated_at":{"format":"date-time","type":"string","isRequired":true,"uniqueKey":"data.oneOf.0.updated_at","typeLabel":"string\u003cdate-time>"}},"required":["id","account_id","category_id","tag_ids","amount","type","currency_code","source","status","ignored","description","merchant_name","notes","transacted_at","created_at","updated_at"],"title":"Transaction","type":"object","isRequired":true,"uniqueKey":"data.oneOf.0","typeLabel":"Transaction · object"},{"additionalProperties":false,"properties":{"account_id":{"format":"uuid","type":"string"},"amount":{"description":"Absolute amount as a decimal string, in `currency_code`. `type` gives the direction.","example":"42.90","format":"decimal","type":"string"},"category_id":{"oneOf":[{"format":"uuid","type":"string"},{"format":"uuid","type":"null"}]},"created_at":{"format":"date-time","type":"string"},"currency_code":{"description":"ISO 4217 code","example":"BRL","type":"string"},"description":{"type":"string"},"id":{"format":"uuid","type":"string"},"ignored":{"description":"True when the transaction does not count in totals","type":"boolean"},"merchant_name":{"oneOf":[{"type":"string"},{"type":"null"}]},"notes":{"oneOf":[{"type":"string"},{"type":"null"}]},"source":{"description":"`manual` for a transaction you recorded, `connected` for one that a bank sent, `apple_pay` for one that the Apple Pay shortcut imported, and `pix` for a Pix you paid through Visor while the bank has not sent it yet. Only `manual` accepts edits to every field.","enum":["manual","connected","apple_pay","pix"],"type":"string"},"status":{"enum":["pending","posted"],"type":"string"},"tag_ids":{"items":{"format":"uuid","type":"string"},"type":"array"},"transacted_at":{"format":"date-time","type":"string"},"type":{"description":"`debit` for money out, `credit` for money in","enum":["debit","credit"],"type":"string"},"updated_at":{"format":"date-time","type":"string"}},"required":["id","account_id","category_id","tag_ids","amount","type","currency_code","source","status","ignored","description","merchant_name","notes","transacted_at","created_at","updated_at"],"title":"Transaction","type":"null","isRequired":true,"uniqueKey":"data.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"data","typeLabel":"Transaction · object | null"}},"required":["data"],"title":"TransactionResponse","type":"object","uniqueKey":"","typeLabel":"TransactionResponse · object"},"examples":{"Example":{"title":"Example","value":{"data":{"account_id":"5d3a9c1e-2b4f-4e6a-8c7d-1f0e9b2a3c45","amount":"42.90","category_id":"3e9a1b7c-4d2f-4a8e-9b6c-0d1e2f3a4b5c","created_at":"2026-10-01T15:31:02Z","currency_code":"BRL","description":"Padaria","id":"9c1e4b2a-7d3f-4e8a-b6c5-1a2b3c4d5e6f","ignored":false,"merchant_name":null,"notes":null,"source":"manual","status":"posted","tag_ids":[],"transacted_at":"2026-10-01T15:30:00Z","type":"debit","updated_at":"2026-10-01T15:31:02Z"}}}},"exampleType":"examples"}},"description":"The edited transaction","headers":{"x-ratelimit-limit":{"description":"Requests allowed for this token per minute","schema":{"example":60,"type":"integer"},"style":"simple"},"x-ratelimit-remaining":{"description":"Requests left for this token in the current minute","schema":{"example":59,"type":"integer"},"style":"simple"},"x-request-id":{"description":"Request identifier, also returned as `request_id` in errors","schema":{"type":"string"},"style":"simple"}},"exampleType":"examples"},"d826617d-043b-43e8-8410-2976505b96bc":{"content":{"application/json":{"example":{"errors":[{"code":"BAD_REQUEST","details":{"field":"currency_code"},"message":"The request is malformed.","request_id":"F8x2kQ9vXc1AAAAB"}]},"schema":{"additionalProperties":false,"properties":{"errors":{"items":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable code","example":"INVALID_TOKEN","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"details":{"additionalProperties":true,"description":"Code-specific context","type":"object","isRequired":true,"uniqueKey":"errors.items.[INDEX].details","typeLabel":"object"},"message":{"description":"English text for developers","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"request_id":{"oneOf":[{"description":"The x-request-id response header of the request","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.0","typeLabel":"string"},{"description":"The x-request-id response header of the request","type":"null","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id","typeLabel":"string | null"}},"required":["code","message","details","request_id"],"title":"Error","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"Error · object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"Error · object[]"}},"required":["errors"],"title":"ErrorResponse","type":"object","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"BAD_REQUEST","details":{"field":"currency_code"},"message":"The request is malformed.","request_id":"F8x2kQ9vXc1AAAAB"}]}}},"exampleType":"examples"}},"description":"The body has a field the operation does not accept, or (on create) the Idempotency-Key header is missing or malformed","headers":{"x-request-id":{"description":"Request identifier, also returned as `request_id` in errors","schema":{"type":"string"},"style":"simple"}},"exampleType":"examples"},"980cb024-c366-4981-aeb6-29e4aa70bc06":{"content":{"application/json":{"example":{"errors":[{"code":"INVALID_TOKEN","details":{},"message":"The personal API token is not valid.","request_id":"F8x2kQ9vXc1AAAAB"}]},"schema":{"additionalProperties":false,"properties":{"errors":{"items":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable code","example":"INVALID_TOKEN","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"details":{"additionalProperties":true,"description":"Code-specific context","type":"object","isRequired":true,"uniqueKey":"errors.items.[INDEX].details","typeLabel":"object"},"message":{"description":"English text for developers","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"request_id":{"oneOf":[{"description":"The x-request-id response header of the request","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.0","typeLabel":"string"},{"description":"The x-request-id response header of the request","type":"null","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id","typeLabel":"string | null"}},"required":["code","message","details","request_id"],"title":"Error","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"Error · object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"Error · object[]"}},"required":["errors"],"title":"ErrorResponse","type":"object","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"INVALID_TOKEN","details":{},"message":"The personal API token is not valid.","request_id":"F8x2kQ9vXc1AAAAB"}]}}},"exampleType":"examples"}},"description":"Missing, invalid, expired, or revoked token","headers":{"x-request-id":{"description":"Request identifier, also returned as `request_id` in errors","schema":{"type":"string"},"style":"simple"}},"exampleType":"examples"},"3761194e-2906-47dc-af8a-8dadd5c42787":{"content":{"application/json":{"example":{"errors":[{"code":"INSUFFICIENT_SCOPE","details":{"required_scope":"pfm:transactions:write"},"message":"The personal API token does not grant this operation.","request_id":"F8x2kQ9vXc1AAAAB"}]},"schema":{"additionalProperties":false,"properties":{"errors":{"items":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable code","example":"INVALID_TOKEN","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"details":{"additionalProperties":true,"description":"Code-specific context","type":"object","isRequired":true,"uniqueKey":"errors.items.[INDEX].details","typeLabel":"object"},"message":{"description":"English text for developers","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"request_id":{"oneOf":[{"description":"The x-request-id response header of the request","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.0","typeLabel":"string"},{"description":"The x-request-id response header of the request","type":"null","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id","typeLabel":"string | null"}},"required":["code","message","details","request_id"],"title":"Error","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"Error · object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"Error · object[]"}},"required":["errors"],"title":"ErrorResponse","type":"object","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"INSUFFICIENT_SCOPE","details":{"required_scope":"pfm:transactions:write"},"message":"The personal API token does not grant this operation.","request_id":"F8x2kQ9vXc1AAAAB"}]}}},"exampleType":"examples"}},"description":"Pro or Premium plan required, or insufficient scope","headers":{"x-request-id":{"description":"Request identifier, also returned as `request_id` in errors","schema":{"type":"string"},"style":"simple"}},"exampleType":"examples"},"b504da8e-1d68-44f7-8189-2a47b8eac5fb":{"content":{"application/json":{"example":{"errors":[{"code":"NOT_FOUND","details":{},"message":"The resource does not exist.","request_id":"F8x2kQ9vXc1AAAAB"}]},"schema":{"additionalProperties":false,"properties":{"errors":{"items":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable code","example":"INVALID_TOKEN","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"details":{"additionalProperties":true,"description":"Code-specific context","type":"object","isRequired":true,"uniqueKey":"errors.items.[INDEX].details","typeLabel":"object"},"message":{"description":"English text for developers","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"request_id":{"oneOf":[{"description":"The x-request-id response header of the request","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.0","typeLabel":"string"},{"description":"The x-request-id response header of the request","type":"null","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id","typeLabel":"string | null"}},"required":["code","message","details","request_id"],"title":"Error","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"Error · object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"Error · object[]"}},"required":["errors"],"title":"ErrorResponse","type":"object","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"NOT_FOUND","details":{},"message":"The resource does not exist.","request_id":"F8x2kQ9vXc1AAAAB"}]}}},"exampleType":"examples"}},"description":"The space or the transaction does not exist, or the token's user cannot access it","headers":{"x-request-id":{"description":"Request identifier, also returned as `request_id` in errors","schema":{"type":"string"},"style":"simple"}},"exampleType":"examples"},"ad58c2db-e823-41a9-9672-0f814ab02f44":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"errors":{"items":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable code","example":"INVALID_TOKEN","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"details":{"additionalProperties":true,"description":"Code-specific context","type":"object","isRequired":true,"uniqueKey":"errors.items.[INDEX].details","typeLabel":"object"},"message":{"description":"English text for developers","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"request_id":{"oneOf":[{"description":"The x-request-id response header of the request","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.0","typeLabel":"string"},{"description":"The x-request-id response header of the request","type":"null","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id","typeLabel":"string | null"}},"required":["code","message","details","request_id"],"title":"Error","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"Error · object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"Error · object[]"}},"required":["errors"],"title":"ErrorResponse","type":"object","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"INVALID_TOKEN","details":{},"message":"\u003cstring>","request_id":"\u003cstring>"}]}}},"exampleType":"generated"}},"description":"The client does not accept JSON","headers":{"x-request-id":{"description":"Request identifier, also returned as `request_id` in errors","schema":{"type":"string"},"style":"simple"}},"exampleType":"generated"},"ed6b1b47-de27-4a13-a0e0-19c828a89ac8":{"content":{"application/json":{"example":{"errors":[{"code":"IMMUTABLE_PROVIDER_FIELD","details":{"field":"amount"},"message":"The bank owns this field of a connected transaction. It cannot be edited.","request_id":"F8x2kQ9vXc1AAAAB"}]},"schema":{"additionalProperties":false,"properties":{"errors":{"items":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable code","example":"INVALID_TOKEN","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"details":{"additionalProperties":true,"description":"Code-specific context","type":"object","isRequired":true,"uniqueKey":"errors.items.[INDEX].details","typeLabel":"object"},"message":{"description":"English text for developers","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"request_id":{"oneOf":[{"description":"The x-request-id response header of the request","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.0","typeLabel":"string"},{"description":"The x-request-id response header of the request","type":"null","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id","typeLabel":"string | null"}},"required":["code","message","details","request_id"],"title":"Error","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"Error · object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"Error · object[]"}},"required":["errors"],"title":"ErrorResponse","type":"object","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"IMMUTABLE_PROVIDER_FIELD","details":{"field":"amount"},"message":"The bank owns this field of a connected transaction. It cannot be edited.","request_id":"F8x2kQ9vXc1AAAAB"}]}}},"exampleType":"examples"}},"description":"The body changes a field that the bank owns, or the transaction cannot change","headers":{"x-request-id":{"description":"Request identifier, also returned as `request_id` in errors","schema":{"type":"string"},"style":"simple"}},"exampleType":"examples"},"32fce964-07d8-4a71-b9b6-5ce45e7db373":{"content":{"application/json":{"example":{"errors":[{"code":"VALIDATION_FAILED","details":{"errors":[{"field":"amount","message":"must be greater than 0"}]},"message":"The request body has invalid values. See details.errors.","request_id":"F8x2kQ9vXc1AAAAB"}]},"schema":{"additionalProperties":false,"properties":{"errors":{"items":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable code","example":"INVALID_TOKEN","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"details":{"additionalProperties":true,"description":"Code-specific context","type":"object","isRequired":true,"uniqueKey":"errors.items.[INDEX].details","typeLabel":"object"},"message":{"description":"English text for developers","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"request_id":{"oneOf":[{"description":"The x-request-id response header of the request","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.0","typeLabel":"string"},{"description":"The x-request-id response header of the request","type":"null","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id","typeLabel":"string | null"}},"required":["code","message","details","request_id"],"title":"Error","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"Error · object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"Error · object[]"}},"required":["errors"],"title":"ErrorResponse","type":"object","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"VALIDATION_FAILED","details":{"errors":[{"field":"amount","message":"must be greater than 0"}]},"message":"The request body has invalid values. See details.errors.","request_id":"F8x2kQ9vXc1AAAAB"}]}}},"exampleType":"examples"}},"description":"The body has invalid values","headers":{"x-request-id":{"description":"Request identifier, also returned as `request_id` in errors","schema":{"type":"string"},"style":"simple"}},"exampleType":"examples"},"5b3178ba-7b77-4e8c-bb8d-08158ed60033":{"content":{"application/json":{"example":{"errors":[{"code":"RATE_LIMITED","details":{"retry_after_seconds":42},"message":"Too many requests. Retry after the number of seconds in Retry-After.","request_id":"F8x2kQ9vXc1AAAAB"}]},"schema":{"additionalProperties":false,"properties":{"errors":{"items":{"additionalProperties":false,"properties":{"code":{"description":"Stable machine-readable code","example":"INVALID_TOKEN","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"string"},"details":{"additionalProperties":true,"description":"Code-specific context","type":"object","isRequired":true,"uniqueKey":"errors.items.[INDEX].details","typeLabel":"object"},"message":{"description":"English text for developers","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"request_id":{"oneOf":[{"description":"The x-request-id response header of the request","type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.0","typeLabel":"string"},{"description":"The x-request-id response header of the request","type":"null","isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"errors.items.[INDEX].request_id","typeLabel":"string | null"}},"required":["code","message","details","request_id"],"title":"Error","type":"object","uniqueKey":"errors.items.[INDEX]","typeLabel":"Error · object"},"minItems":1,"type":"array","isRequired":true,"uniqueKey":"errors","typeLabel":"Error · object[]"}},"required":["errors"],"title":"ErrorResponse","type":"object","uniqueKey":"","typeLabel":"ErrorResponse · object"},"examples":{"Example":{"title":"Example","value":{"errors":[{"code":"RATE_LIMITED","details":{"retry_after_seconds":42},"message":"Too many requests. Retry after the number of seconds in Retry-After.","request_id":"F8x2kQ9vXc1AAAAB"}]}}},"exampleType":"examples"}},"description":"Rate limit exceeded","headers":{"retry-after":{"description":"Seconds until the current window ends","schema":{"example":42,"type":"integer"},"style":"simple"},"x-ratelimit-limit":{"description":"Requests allowed for this token per minute","schema":{"example":60,"type":"integer"},"style":"simple"},"x-ratelimit-remaining":{"description":"Requests left for this token in the current minute","schema":{"example":59,"type":"integer"},"style":"simple"},"x-request-id":{"description":"Request identifier, also returned as `request_id` in errors","schema":{"type":"string"},"style":"simple"}},"exampleType":"examples"}},"security":{"aced51fa-1496-4972-8e33-177415a6c517":{"personal_api_token":{"bearerFormat":"visor_pat_\u003cpublic_id>_\u003csecret>","description":"Personal API token created in Visor Settings","scheme":"bearer","type":"http","scopes":[],"schemeName":"personal_api_token"}},"8042d3c0-4a4f-42f9-a1af-19c2530d0602":{"visor_cli_oauth":{"description":"OAuth 2.0 access token of the Visor CLI browser login (authorization code with PKCE). Only the first-party Visor CLI client can use it on this API.","flows":{"authorizationCode":{"authorizationUrl":"https://dashboard.visorfinance.app/oauth/authorize","refreshUrl":"https://dashboard.visorfinance.app/oauth/token","scopes":{"pfm:read":"Read financial data","pfm:transactions:write":"Create, edit, and delete transactions","pix:payments:write":"Start Pix payments that you confirm with biometrics at your bank"},"tokenUrl":"https://dashboard.visorfinance.app/oauth/token"}},"type":"oauth2","scopes":["pfm:read"],"schemeName":"visor_cli_oauth"}}},"servers":{"e02cc6e5-1238-4b59-b1fd-3f6cb20e7f31":{"url":"https://api.visorfinance.app","variables":{}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"bearerFormat":"visor_pat_\u003cpublic_id>_\u003csecret>","description":"Personal API token created in Visor Settings","scheme":"bearer","type":"http","scopes":[],"schemeName":"personal_api_token"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Personal API token created in Visor Settings","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"personal_api_token","name":"Authorization"}],"title":"personal_api_token"},{"schemes":[{"scheme":{"description":"OAuth 2.0 access token of the Visor CLI browser login (authorization code with PKCE). Only the first-party Visor CLI client can use it on this API.","flows":{"authorizationCode":{"authorizationUrl":"https://dashboard.visorfinance.app/oauth/authorize","refreshUrl":"https://dashboard.visorfinance.app/oauth/token","scopes":{"pfm:read":"Read financial data","pfm:transactions:write":"Create, edit, and delete transactions","pix:payments:write":"Start Pix payments that you confirm with biometrics at your bank"},"tokenUrl":"https://dashboard.visorfinance.app/oauth/token"}},"type":"oauth2","scopes":["pfm:read"],"schemeName":"visor_cli_oauth"},"schema":{"title":"OAuth2 Auth","type":"string","isRequired":true,"description":"OAuth 2.0 access token of the Visor CLI browser login (authorization code with PKCE). Only the first-party Visor CLI client can use it on this API.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"visor_cli_oauth","name":"Authorization"}],"title":"visor_cli_oauth"}]},"originalFileLocation":"openapi.json"},"subdomain":"visorfinance","siteName":"Visor Personal API","title":"Edit a transaction - Visor Personal API","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/transactions/edit-a-transaction","matchLevel":0},"pt-BR":{"href":"/pt-BR/introduction","matchLevel":4}}},"lastModified":"2026-10-28T22:09:00.447Z","originalFileLocation":"api-reference/transactions/edit-a-transaction.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Changes the fields in the body and keeps the others. Requires the pfm:transactions:write scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only category_id, notes, ignored, and tag_ids; any other field returns 409 IMMUTABLE_PROVIDER_FIELD. tag_ids replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Visor Personal API\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Edit a transaction - Visor Personal API\">\u003cmeta data-mint-head property=\"og:description\" content=\"Changes the fields in the body and keeps the others. Requires the pfm:transactions:write scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only category_id, notes, ignored, and tag_ids; any other field returns 409 IMMUTABLE_PROVIDER_FIELD. tag_ids replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Visor Personal API\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://visorfinance.mintlify.app/_mintlify/api/og/v2?division=Transactions\u0026amp;title=Edit+a+transaction\u0026amp;description=Changes+the+fields+in+the+body+and+keeps+the+others.+Requires+the+%60pfm%3Atransactions%3Awrite%60+scope.+A+manual+transaction+accepts+every+field+of+the+body+schema.+A\u0026amp;theme=b0ec978ce696cb62f7364ac7\u0026amp;signature=f48756c9adb419d2a466dbb729f1c8f4f103ffb308b1797c28118533192d6ce0\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Edit a transaction - Visor Personal API\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Changes the fields in the body and keeps the others. Requires the pfm:transactions:write scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only category_id, notes, ignored, and tag_ids; any other field returns 409 IMMUTABLE_PROVIDER_FIELD. tag_ids replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://visorfinance.mintlify.app/_mintlify/api/og/v2?division=Transactions\u0026amp;title=Edit+a+transaction\u0026amp;description=Changes+the+fields+in+the+body+and+keeps+the+others.+Requires+the+%60pfm%3Atransactions%3Awrite%60+scope.+A+manual+transaction+accepts+every+field+of+the+body+schema.+A\u0026amp;theme=b0ec978ce696cb62f7364ac7\u0026amp;signature=f48756c9adb419d2a466dbb729f1c8f4f103ffb308b1797c28118533192d6ce0\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/visorfinance/5UapUUoMXshFQcuc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Visor Personal API\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#155DFC\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/transactions/edit-a-transaction.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.visorfinance.app/#organization\",\"name\":\"Visor Personal API\",\"url\":\"https://docs.visorfinance.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/visorfinance/184cqPrO8BXx_1WV/logo/light-mode.svg?fit=max\u0026auto=format\u0026n=184cqPrO8BXx_1WV\u0026q=85\u0026s=fb4be31a4d2e8c680c4e43c5758216e0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.visorfinance.app#website\",\"name\":\"Visor Personal API\",\"url\":\"https://docs.visorfinance.app\",\"publisher\":{\"@id\":\"https://docs.visorfinance.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction#webpage\",\"url\":\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction\",\"name\":\"Edit a transaction\",\"description\":\"Changes the fields in the body and keeps the others. Requires the pfm:transactions:write scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only category_id, notes, ignored, and tag_ids; any other field returns 409 IMMUTABLE_PROVIDER_FIELD. tag_ids replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.\",\"dateModified\":\"2026-10-28T22:09:00.447Z\",\"isPartOf\":{\"@id\":\"https://docs.visorfinance.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Transactions\",\"item\":\"https://docs.visorfinance.app/api-reference/transactions/list-transactions\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Edit a transaction\",\"item\":\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction#apireference\",\"headline\":\"Edit a transaction\",\"name\":\"Edit a transaction\",\"description\":\"Changes the fields in the body and keeps the others. Requires the pfm:transactions:write scope. A manual transaction accepts every field of the body schema. A connected or Apple Pay transaction accepts only category_id, notes, ignored, and tag_ids; any other field returns 409 IMMUTABLE_PROVIDER_FIELD. tag_ids replaces every tag; an empty list removes them. The change is atomic: a failed validation changes nothing.\",\"url\":\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction\",\"mainEntityOfPage\":{\"@id\":\"https://docs.visorfinance.app/api-reference/transactions/edit-a-transaction#webpage\"},\"dateModified\":\"2026-10-28T22:09:00.447Z\",\"publisher\":{\"@id\":\"https://docs.visorfinance.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.visorfinance.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Visor Personal API\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Visor Personal API","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Guides","pages":[{"title":"Guides","href":"/introduction"}]},{"tab":"API reference","groups":[{"group":"Spaces","pages":[{"title":"List accessible spaces","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces","href":"/api-reference/spaces/list-accessible-spaces"}]},{"group":"Accounts","pages":[{"title":"List accounts","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/accounts","href":"/api-reference/accounts/list-accounts"}]},{"group":"Categories","pages":[{"title":"List categories","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/categories","href":"/api-reference/categories/list-categories"}]},{"group":"Tags","pages":[{"title":"List tags","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/tags","href":"/api-reference/tags/list-tags"}]},{"group":"Transactions","pages":[{"title":"List transactions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/transactions","href":"/api-reference/transactions/list-transactions"},{"title":"Get a transaction","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/transactions/{transaction_id}","href":"/api-reference/transactions/get-a-transaction"},{"title":"Create a transaction","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/spaces/{space_id}/transactions","href":"/api-reference/transactions/create-a-transaction"},{"title":"Create transactions in a batch","description":"Records 1 to 100 manual transactions independently. Requires the `pfm:transactions:write` scope. Each row has the single-create fields and an `idempotency_key` with the same rules as the single-create header. The response preserves input order and uses zero-based indexes. A failed row does not undo successful rows. Retrying a successful row returns `replayed`; a changed body for its key returns `IDEMPOTENCY_CONFLICT`. The batch counts as one request.","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/spaces/{space_id}/transactions/batch","href":"/api-reference/transactions/create-transactions-in-a-batch"},{"title":"Edit a transaction","deprecated":null,"version":null,"openapi":"/openapi.json patch /v1/spaces/{space_id}/transactions/{transaction_id}","href":"/api-reference/transactions/edit-a-transaction"},{"title":"Delete a transaction","description":"Deletes one transaction of the space. Requires the `pfm:transactions:write` scope. Visor removes a manual transaction and reverses its effect on the account balance. A connected transaction is hidden instead, so the next bank sync does not bring it back.","deprecated":null,"version":null,"openapi":"/openapi.json delete /v1/spaces/{space_id}/transactions/{transaction_id}","href":"/api-reference/transactions/delete-a-transaction"}]},{"group":"Overview","pages":[{"title":"Get the financial overview","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/overview","href":"/api-reference/overview/get-the-financial-overview"}]},{"group":"Cards","pages":[{"title":"List credit cards","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/cards","href":"/api-reference/cards/list-credit-cards"},{"title":"List the bills of a credit card","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/cards/{card_id}/bills","href":"/api-reference/cards/list-the-bills-of-a-credit-card"}]},{"group":"Recurring expenses","pages":[{"title":"List subscriptions","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/subscriptions","href":"/api-reference/recurring-expenses/list-subscriptions"},{"title":"List fixed bills","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/fixed-bills","href":"/api-reference/recurring-expenses/list-fixed-bills"}]},{"group":"Installments","pages":[{"title":"List installment plans","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/installment-plans","href":"/api-reference/installments/list-installment-plans"}]},{"group":"Goals","pages":[{"title":"List goals","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/goals","href":"/api-reference/goals/list-goals"}]},{"group":"Investments","pages":[{"title":"List investments","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/investments","href":"/api-reference/investments/list-investments"}]},{"group":"Connections","pages":[{"title":"List Open Finance connections","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/spaces/{space_id}/connections","href":"/api-reference/connections/list-open-finance-connections"}]},{"group":"User","pages":[{"title":"Show the current user","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/me","href":"/api-reference/user/show-the-current-user"}]},{"group":"Notifications","pages":[{"title":"List notifications","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/notifications","href":"/api-reference/notifications/list-notifications"}]},{"group":"Pix payments","pages":[{"title":"Start a Pix payment","deprecated":null,"version":null,"openapi":"/openapi.json post /v1/pix-payments","href":"/api-reference/pix-payments/start-a-pix-payment"},{"title":"Get a Pix payment","deprecated":null,"version":null,"openapi":"/openapi.json get /v1/pix-payments/{pix_payment_id}","href":"/api-reference/pix-payments/get-a-pix-payment"}]}]}]},{"language":"pt-BR","navbar":{"primary":{"type":"button","label":"Criar um token","href":"https://dashboard.visorfinance.app/settings/connected_apps"}},"pages":[{"title":"pt-BR","href":"/pt-BR/introduction"}]}]},"basePath":"","title":"Edit a transaction - Visor Personal API","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DCDCdBVX.js","utils-ME8dDnLe.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-0e84ACsd.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-wgRBj-ia.js","snippetPresets-C11Sgb-o.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-C0lapOpP.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-ZeRQV8fF.js","shallow-BupWh095.js","getApiPlaygroundDisplay-BnYQO2Ss.js","CodeSnippet-RKKOc8c_.js","CodeSnippets-Drf_m8wS.js","Page-Bevw23-4.js","getPastedJson-u6QiPzNZ.js","icon-Bb-CBSxO.js","MethodPill-F7l5AI7V.js","DuplicateIcon-IiAXkdSg.js","createIcon-FliI8EBc.js","DynamicMarkdown-B62XqCSI.js","SectionHeading-Dj31pT03.js","axios-vUo_bRtp.js","Markdown-BOgQCTwD.js","clsx-BIWXJmsZ.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DKZWslLH.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-UDqbR6xh.js"]}