COUNTCOUNT
Sign Up
BillsCreate a bill

Create a bill

POST/partners/bills

Creates a new vendor bill (draft by default, or approved for migrations).

Required: exactly one of vendorUuid OR inline vendor object, date, dueDate, and lineItems with categoryAccountUuid, quantity, and price. Optional approvalStatus (draft | approved). Inline vendors are echoed on the response as _partnerInlineCreated.

HMAC signature + Bearer access token
Try this request

Request body

vendorUuiduuid

Existing vendor UUID from the Vendors API. Mutually exclusive with vendor.

vendorobject

Inline vendor to create when vendorUuid is omitted.

namestring

Vendor display name (or use vendor field alias).

emailstring

Optional vendor email.

datedaterequired

Bill date (ISO, YYYY-MM-DD).

dueDatedaterequired

Due date (ISO, YYYY-MM-DD).

lineItemsarrayrequired

Expense lines on the bill.

categoryAccountUuiduuidrequired

Expense account UUID from Chart of Accounts.

descriptionstring

Line description.

quantitynumberrequired

Quantity.

pricenumberrequired

Unit price.

projectUuiduuid

Optional project UUID on the line.

customerUuiduuid

Optional customer UUID for billable expenses.

billNumberstring

Custom bill number. Auto-assigned when omitted.

purchaseOrderNumberstring

Purchase order reference.

notesstring

Free-text notes.

currencystring

ISO 4217 currency. Defaults to workspace currency.

tagUuidsarray

Tag UUIDs from the Tags API.

projectUuiduuid

Bill-level project UUID.

approvalStatusenum

Draft (default) or approved — approved posts A/P journals immediately (migration use case).

One of: draft, approved

attachmentsarray

Attachments by public URL.

urlstringrequired

Public file URL.

titlestring

Display title.

Responses

201Bill created in draft.
400Validation failed — missing required fields or invalid UUID references.
401Missing or invalid HMAC signature, expired timestamp, or invalid Bearer token. Troubleshoot
403The credential does not have access to this workspace or resource. Troubleshoot
429Rate limit exceeded (100 requests per minute per clientId). Retry after the Retry-After header. Troubleshoot
POSThttps://api.getcount.com/partners/bills
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 = '/bills';
const timestamp = Math.floor(Date.now() / 1000).toString();
const body = {
  "vendorUuid": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
  "date": "2026-01-15",
  "dueDate": "2026-02-15",
  "lineItems": [
    {
      "categoryAccountUuid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
      "description": "Office supplies",
      "quantity": 1,
      "price": 250
    }
  ],
  "notes": "Q1 office supplies"
};
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/bills`, {
  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
{
  "id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
  "billNumber": "BILL-1043",
  "billType": "bill",
  "date": "2026-01-15",
  "dueDate": "2026-02-15",
  "currency": "USD",
  "approvalStatus": "draft",
  "status": "draft",
  "total": 250,
  "paidAmount": 0,
  "amountDue": 250,
  "notes": "Office supplies for Q1",
  "purchaseOrderNumber": null,
  "isDeleted": false,
  "vendor": {
    "id": "f1a2b3c4-d5e6-7890-abcd-ef1234567890",
    "name": "Office Depot",
    "email": "ap@officedepot.example"
  },
  "lineItems": [
    {
      "id": "a4b5c6d7-e8f9-0123-abcd-456789012345",
      "description": "Office supplies",
      "quantity": 1,
      "price": 250,
      "total": 250,
      "categoryAccountUuid": "c3d4e5f6-a7b8-9012-cdef-123456789012"
    }
  ],
  "transactions": [],
  "appliedVendorMemos": [],
  "tagUuids": [],
  "createdAt": "2026-01-15T10:30:00.000Z",
  "updatedAt": "2026-01-28T14:22:30.000Z"
}