Update customer
Update a customer. Only the fields you send change. Changing `defaultCategorization` affects future categorizations only; transactions already categorized keep what they have.
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 <= lengthRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
curl -X PUT "https://example.com/companies/string/customers/string" \ -H "Content-Type: application/json" \ -d '{}'{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "companyId": "8bb73d03-06b4-47c7-80c7-59301f770eda", "name": "string", "defaultCategorization": { "categoryId": "string", "usingDateRule": { "type": "transactionDate" }, "plSplit": { "revenue": 0, "cogs": 0, "cac": 0, "pd": 0, "ga": 0, "no": 0, "neutral": 0 }, "passThroughTax": 0, "transferTargetAccountId": "string" }, "domains": [ "string" ], "logo": true, "autoCreatedSource": "searchApiGoogleWebSearch", "countryCode": "string", "createdTime": "2019-08-24T14:15:22Z", "createdUserId": "string", "lastUpdatedTime": "2019-08-24T14:15:22Z", "lastUpdatedUserId": "string", "externalIds": [ "string" ]}Delete customer
Delete a customer. This reaches further than it looks: their subscriptions are cascade-deleted, which changes MRR history, and any planned transaction pointing at them is unassigned. Transactions survive but lose their counterparty, and each one is flagged to stay out of auto-categorization so the deleted customer is not immediately re-matched. For a duplicate record, merge instead of deleting.
Batch delete
Delete many customers in one call. `selection` works two ways: `mode: "ids"` with an explicit list, or `mode: "filter"` with the same filter the list endpoint takes (`q`, `onlyActive`) plus `excludedIds` for the rows the user unticked. Filter mode is what "select all matching" in the UI sends, so nothing has to round-trip every id. Selections resolving to more than 10,000 customers are refused with 413 and a body giving the count and the cap. The response reports how many rows were actually affected.