COUNTCOUNT
Sign Up
InvoicesCreate an invoice

Create an invoice

POST/partners/invoices

Creates 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.

HMAC signature + Bearer access token
Try this request

Request body

customerUuiduuid

Existing customer UUID. Mutually exclusive with customer.

customerobject

Inline customer when customerUuid is omitted.

customerstringrequired

Customer display name.

invoiceTypeenum

Document type. Defaults to invoice.

One of: invoice, estimate, memo

datedaterequired

Invoice date (ISO).

dueDatedate

Due date (ISO). Required for invoices and estimates, drafts included; only credit memos may omit it.

currencystring

ISO 4217 currency code.

invoiceNumberstringrequired

Invoice number shown to the customer.

productsarrayrequired

The products or services billed on this invoice.

productUuiduuid

Product UUID from list_products. `uuid` is accepted as an alias. Omit it for a free-text line.

categoryAccountUuiduuid

Income account UUID from the Chart of Accounts. Required on a free-text line; on a product line it overrides the product's income account.

namestring

Item name on a free-text line.

descriptionstring

Line description.

quantitynumberrequired

Quantity billed.

unitPricenumberrequired

Price per unit.

nonTaxableboolean

When true, clears tax on the line.

appliedToInvoiceUuiduuid

For credit memos: link to an open invoice at create time.

isDraftboolean

When 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.
POSThttps://api.getcount.com/partners/invoices
Request
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 = '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());
Response · 201
{
  "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"
    }
  }
}