Create an invoice
/partners/invoicesCreates an invoice, estimate, or credit memo (invoiceType: "memo").
Required: exactly one of customerUuid OR inline customer object, date, invoiceNumber, dueDate (invoices and estimates), and products[] with productUuid, an inline product, or categoryAccountUuid for a free-text line. Optional isDraft (false posts revenue journals for migrations). Response may include _partnerInlineCreated, and `_partnerWarnings: [{ field, reason, message }]` for any field that was ignored.
Request body
customerUuiduuidExisting customer UUID. Mutually exclusive with customer.
customerobjectInline customer when customerUuid is omitted.
customerstringrequiredCustomer display name.
invoiceTypeenumDocument type. Defaults to invoice.
One of: invoice, estimate, memo
datedaterequiredInvoice date (ISO).
dueDatedateDue date (ISO). Required for invoices and estimates, drafts included; only credit memos may omit it.
currencystringISO 4217 currency code.
invoiceNumberstringrequiredInvoice number shown to the customer.
productsarrayrequiredThe products or services billed on this invoice.
productUuiduuidProduct UUID from list_products. `uuid` is accepted as an alias. Omit it for a free-text line.
categoryAccountUuiduuidIncome account UUID from the Chart of Accounts. Required on a free-text line; on a product line it overrides the product's income account.
namestringItem name on a free-text line.
descriptionstringLine description.
quantitynumberrequiredQuantity billed.
unitPricenumberrequiredPrice per unit.
nonTaxablebooleanWhen true, clears tax on the line.
appliedToInvoiceUuiduuidFor credit memos: link to an open invoice at create time.
isDraftbooleanWhen false, approves and posts revenue journals immediately (migration use case). Defaults to draft.
Responses
201Invoice created successfully.400Bad request — validation failed, a missing due date on an invoice or estimate, or a free-text line with no categoryAccountUuid.404Customer or product not found.409The workspace has no Custom line product, so free-text lines cannot be raised.https://api.getcount.com/partners/invoicesimport 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 = 'POST';
const signingPath = '/invoices';
const timestamp = Math.floor(Date.now() / 1000).toString();
const body = {
"customerUuid": "dfa3219e-6af8-4c53-997a-037534f63a35",
"invoiceType": "invoice",
"invoiceNumber": "INV-1042",
"date": "2026-03-01",
"dueDate": "2026-03-31",
"currency": "USD",
"products": [
{
"productUuid": "aa11bb22-cc33-dd44-ee55-ff6677889900",
"description": "Consulting services",
"quantity": 10,
"unitPrice": 100,
"nonTaxable": false
},
{
"categoryAccountUuid": "d4e5f6a7-b8c9-0123-defa-234567890123",
"name": "Site visit",
"description": "Travel to client office",
"quantity": 1,
"unitPrice": 150
}
]
};
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/invoices`, {
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());{
"status": "success",
"data": {
"invoice": {
"id": "f6a7b8c9-d0e1-2345-fabc-456789012345",
"invoiceNumber": "INV-1042",
"invoiceType": "invoice",
"customerUuid": "dfa3219e-6af8-4c53-997a-037534f63a35",
"date": "2026-03-01",
"dueDate": "2026-03-31",
"currency": "USD",
"status": "draft",
"isDraft": true,
"approved": false,
"isSent": false,
"paymentStatus": "unpaid",
"subtotal": 1000,
"taxTotal": 85,
"total": 1085,
"amountDue": 1085,
"products": [
{
"productUuid": "aa11bb22-cc33-dd44-ee55-ff6677889900",
"description": "Consulting services",
"quantity": 10,
"unitPrice": 100,
"nonTaxable": false
}
],
"createdAt": "2026-03-01T09:00:00.000Z",
"updatedAt": "2026-03-02T11:15:00.000Z"
}
}
}