Split a transaction
PUT
/partners/transactions/{uuid}/splitSplits a transaction into a parent row and child rows before bill or invoice assignment.
HMAC signature + Bearer access token
Try this requestPath parameters
uuiduuidrequiredThe UUID of the transaction to split.
Request body
forAttachmentbooleanWhen true, matches the COUNT bill/invoice attachment split flow.
splitASplitbooleanWhen true, further splits an existing split child row.
withCautionbooleanRequired to split reconciled transactions.
parentobjectParent split row. Use categoryAccountUuid from chart of accounts.
categoryAccountUuiduuidCategory account UUID for the parent portion.
amountnumberSigned amount for the parent portion.
assignThisbooleanWhen true, this row is the one to assign to the bill or invoice.
splitsarrayChild split rows.
categoryAccountUuiduuidrequiredCategory account UUID for the child portion.
amountnumberrequiredSigned amount for the child portion.
Responses
200Transaction split. Returns parent and transactionToAssign rows with UUID ids.400Bad request — transfer/deposit splits, reviewed/pending guards, or invalid amounts.404Transaction or category account not found.PUT
https://api.getcount.com/partners/transactions/{uuid}/splitRequest
import crypto from 'node:crypto';
const BASE_URL = 'https://api.getcount.com';
const CLIENT_ID = process.env.COUNT_CLIENT_ID;
const CLIENT_SECRET = process.env.COUNT_CLIENT_SECRET;
const ACCESS_TOKEN = process.env.COUNT_ACCESS_TOKEN;
const method = 'PUT';
const signingPath = '/transactions/3fa85f64-5717-4562-b3fc-2c963f66afa6/split';
const timestamp = Math.floor(Date.now() / 1000).toString();
const body = {
"forAttachment": true,
"parent": {
"categoryAccountUuid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"amount": -100,
"assignThis": true
},
"splits": [
{
"categoryAccountUuid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"amount": -50
}
]
};
const bodyString = JSON.stringify(body);
const bodyHash = crypto.createHash('sha256').update(bodyString).digest('hex');
const baseString = `${method}:${signingPath}:${timestamp}:${bodyHash}`;
const signature = crypto.createHmac('sha256', CLIENT_SECRET).update(baseString).digest('hex');
const response = await fetch(`${BASE_URL}/partners/transactions/3fa85f64-5717-4562-b3fc-2c963f66afa6/split`, {
method,
headers: {
'x-client-id': CLIENT_ID,
'x-timestamp': timestamp,
'x-signature': signature,
'Content-Type': 'application/json',
Authorization: `Bearer ${ACCESS_TOKEN}`,
},
body: bodyString,
});
console.log(await response.json());Response · 200
{
"parent": {
"id": "b7c8d9e0-f1a2-3456-bcde-678901234567",
"type": "EXPENSE",
"description": "Office supplies from Amazon",
"amount": -150,
"currency": "USD",
"postedDate": "2026-03-01",
"authorizedDate": "2026-03-01",
"notes": "Q1 office supplies",
"paymentChannel": "online",
"reviewed": false,
"excluded": false,
"pending": false,
"split": false,
"accountId": "c8d9e0f1-a2b3-4567-cdef-789012345678",
"categoryAccountId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"vendorId": "d4e5f6a7-b8c9-0123-defa-234567890123",
"customerId": null,
"billId": null,
"invoiceId": null,
"tags": [
{
"id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"name": "Office"
}
],
"createdAt": "2026-03-13T08:30:00.000Z",
"updatedAt": "2026-03-13T08:30:00.000Z"
},
"transactionToAssign": {
"id": "b7c8d9e0-f1a2-3456-bcde-678901234567",
"type": "EXPENSE",
"description": "Office supplies from Amazon",
"amount": -150,
"currency": "USD",
"postedDate": "2026-03-01",
"authorizedDate": "2026-03-01",
"notes": "Q1 office supplies",
"paymentChannel": "online",
"reviewed": false,
"excluded": false,
"pending": false,
"split": false,
"accountId": "c8d9e0f1-a2b3-4567-cdef-789012345678",
"categoryAccountId": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"vendorId": "d4e5f6a7-b8c9-0123-defa-234567890123",
"customerId": null,
"billId": null,
"invoiceId": null,
"tags": [
{
"id": "e5f6a7b8-c9d0-1234-efab-345678901234",
"name": "Office"
}
],
"createdAt": "2026-03-13T08:30:00.000Z",
"updatedAt": "2026-03-13T08:30:00.000Z"
}
}