Retrieve transaction
Retrieve one transaction with everything hanging off it: its account, categorizations, comments, and attached files. This is the detail view, so it returns considerably more than the same row does in a list. Returns 404 if the transaction does not exist or belongs to another company.
Authentication
sf_… API key in the bearerAuth field below.A SaaSFlow API key (format sf_…) or an OAuth bearer token. Paste only the key — the proxy adds the Bearer prefix. Create an API key in Settings → Company settings → API keys — see API keys.
In: header
Path Parameters
1 <= length1 <= lengthResponse Body
application/json
application/json
curl -X GET "https://example.com/companies/string/transactions/string"{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "companyId": "8bb73d03-06b4-47c7-80c7-59301f770eda", "accountId": "3d07c219-0a88-45be-9cfc-91e9d095a1e9", "date": "string", "fromTo": "string", "description": "string", "amountValue": "string", "amountCurrency": "EUR", "categorizationsAutoAssigned": true, "excludeFromAutoCategorization": true, "notes": "string", "source": "string", "assignedUserId": "string", "finApiTransactionId": "string", "plaidTransactionId": "string", "stripeBalanceTransactionId": "string", "stripeInvoiceId": "string", "stripeCreditNoteId": "string", "stripePaymentIntentId": "string", "stripeBillingEmail": "string", "hubspotPortalId": "string", "hubspotInvoiceId": "string", "hubspotCategorizationResolved": true, "finwayExpenseNumber": "string", "finwayInvoiceNumber": "string", "pleoExpenseId": "string", "createdVendorId": "91002d41-22cb-48a3-bc93-148a8439ef7f", "integrationId": "497a18ca-284e-40c0-985d-f72be35d468e", "pending": true, "createdTime": "2019-08-24T14:15:22Z", "createdUserId": "string", "lastUpdatedTime": "2019-08-24T14:15:22Z", "lastUpdatedUserId": "string", "categorizations": { "property1": { "counterparty": { "type": "customer", "id": "string" }, "categoryId": "string", "usingDateRule": { "type": "transactionDate" }, "computedStartDate": "2019-08-24", "computedEndDate": "2019-08-24", "plSplit": { "revenue": 0, "cogs": 0, "cac": 0, "pd": 0, "ga": 0, "no": 0, "neutral": 0 }, "passThroughTax": 0, "transferCounterPosition": { "transactionId": "string", "categorizationId": "string" }, "internalTransitLink": { "transactionId": "string", "categorizationId": "string" }, "sourceNote": "string", "externalInvoiceUrn": "string" }, "property2": { "counterparty": { "type": "customer", "id": "string" }, "categoryId": "string", "usingDateRule": { "type": "transactionDate" }, "computedStartDate": "2019-08-24", "computedEndDate": "2019-08-24", "plSplit": { "revenue": 0, "cogs": 0, "cac": 0, "pd": 0, "ga": 0, "no": 0, "neutral": 0 }, "passThroughTax": 0, "transferCounterPosition": { "transactionId": "string", "categorizationId": "string" }, "internalTransitLink": { "transactionId": "string", "categorizationId": "string" }, "sourceNote": "string", "externalInvoiceUrn": "string" } }, "account": { "id": "string", "name": "string", "type": "bank", "importType": "manual", "defaultCurrency": "string", "bankConnection": { "type": "string", "integrationId": "string" }, "accountGroup": { "name": "string" } }, "comments": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "companyId": "8bb73d03-06b4-47c7-80c7-59301f770eda", "transactionId": "75906707-8c31-479c-b354-aa805c4cefbc", "text": "string", "taggedUserIds": [ "string" ], "likedUserIds": [ "string" ], "createdTime": "2019-08-24T14:15:22Z", "createdUserId": "string", "lastUpdatedTime": "2019-08-24T14:15:22Z", "lastUpdatedUserId": "string" } ], "files": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "companyId": "8bb73d03-06b4-47c7-80c7-59301f770eda", "transactionIds": [ "string" ], "filename": "string", "fileExtension": "string", "size": -2147483648, "storagePath": "string", "parseStatus": "open", "parseData": { "amount": { "value": 0, "currency": "string" }, "date": "string", "type": "invoice" }, "createdTime": "2019-08-24T14:15:22Z", "createdUserId": "string", "lastUpdatedTime": "2019-08-24T14:15:22Z", "lastUpdatedUserId": "string" } ]}Transfer chain
Resolve the full path of a linked transfer, ordered from source to destination. Money moving between two accounts is two transactions, and when the legs cannot be matched directly SaaSFlow routes them through a transit account, which puts extra hops in between. This returns every node on that path so the whole movement can be shown as one thing. `nodes` is empty when the categorization is not a linked transfer.
Delete transaction
Delete a transaction and its categorizations, which changes the account balance from that date onward and the P&L for its period. Transactions on integration-managed accounts cannot be deleted here (422); they would reappear on the next sync anyway.