Link transfer
Link two existing transactions as the two legs of one transfer, so the movement stops counting as income on one side and spend on the other. Pass the source transaction with the categorization that represents the transfer, plus the target transaction. Legs that cannot be matched directly, across currencies or dates, are routed through a transit account, which is why the resulting chain can have more than two nodes. Returns 409 if either side is already linked or changed concurrently, and 422 when the two cannot form a transfer at all.
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 <= lengthRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/companies/string/transactions/link_transfer" \ -H "Content-Type: application/json" \ -d '{ "sourceTransactionId": "string", "sourceCategorizationId": "string", "targetTransactionId": "string" }'{ "success": true}Create counter transaction
Book the missing other half of a transfer. When money left one account and the matching arrival was never imported, for example on a cash or wallet account nobody feeds, this creates the opposing transaction on `targetAccountId` and links the two. Use `link_transfer` instead when both sides already exist. Returns 409 if the source is already linked or was changed concurrently.
List integrations
List a company's connected integrations: bank connections, payment and billing providers, and accounting tools. Each entry carries the provider, its connection state, and the sync metadata the app shows on the integrations screen.