2026 RELEASELive Demo
KatixoAIERP
Operations & Financial Accounting Guide

Expenses, Petty Cash & Billable Costs

Track day-to-day business operational overheads, manage office petty cash floats, categorize travel and utility costs, recharge billable expenses to clients, and automatically post General Ledger journals in Katixo.

1. Module Overview: Expenses vs. Purchase Bills

While Purchase Bills manage commercial vendor liabilities and Input Tax Credit (ITC), the Expenses module is built for quick operational payments made directly from cash counters or bank accounts:

Direct Ledger Deductions

Debits the chosen operational expense account (e.g. Fuel, Rent, Tea) and immediately credits the Cash or Bank account.

Billable Client Costs

Tag expenses to specific customers or client projects to include them in the next customer billing cycle.

Receipt Attachments

Attach physical vouchers, fuel slips, and invoice scans for audit-ready compliance.

2. How to Record an Expense (Step-by-Step UI Guide)

  1. 1
    Go to Accounting > Expenses > Click "Add Expense":Choose the Expense Category (e.g. Vehicle Fuel, Office Refreshments, Warehouse Repairs).
  2. 2
    Select "Paid Through" Account:Specify where the funds came from: Petty Cash Float, HDFC Current Account, or Corporate Credit Card.
  3. 3
    Enter Amount & GST Details (if applicable):If the voucher includes tax, input GST components to claim input credit.
  4. 4
    Save Expense:Katixo immediately writes the General Ledger journal: DEBIT Expense Account (6xxx) / CREDIT Cash or Bank (1xxx).

Developer & REST API Reference

Programmatically query, create, update, and categorize expenses via REST:

GET/api/v1/expenses
GET/api/v1/expenses/{id}
POST/api/v1/expenses
PUT/api/v1/expenses/{id}
DELETE/api/v1/expenses/{id}

List expenses

GET/api/v1/expenses

Query parameters

ParameterTypeDescription
fromdateExpense date from (YYYY-MM-DD).
todateExpense date to.
categorystringFilter by expense category.
contactIdUUIDFilter by vendor contact.
page, size, sortint / stringPagination (0-indexed, default size: 20).

Roles: OWNER, ADMIN, ACCOUNTANT, OPERATOR, VIEWER.

Create an expense

POST/api/v1/expenses

Records a new expense and creates the corresponding journal entry. Returns 201 Created.

curl -X POST https://api.katixo.com/api/v1/expenses \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{
    "expenseDate": "2026-06-10",
    "accountId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "category": "Office Supplies",
    "description": "Printer cartridges and A4 paper",
    "amount": 2500.00,
    "gstRate": 18.00,
    "paymentMode": "UPI",
    "paidThroughId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "billable": false
  }'

Request body

FieldTypeRequiredDescription
expenseDatedateYesDate of the expense.
accountIdUUIDYesExpense account to debit.
amountdecimalYesExpense amount (must be > 0.01).
paymentModestringYesHow the expense was paid (e.g., UPI, Cash, Bank Transfer).
paidThroughIdUUIDYesAccount the payment was made from (e.g., cash, bank account).
gstRatedecimalNoGST rate (0, 5, 12, 18, or 28). Defaults to 0.
categorystringNoExpense category for reporting.
contactIdUUIDNoVendor contact. Optional for cash expenses.
billablebooleanNoWhether this expense can be billed to a customer.
customerContactIdUUIDNoCustomer to bill this expense to (when billable).
receiptUrlstringNoURL to the uploaded receipt image.

Void an expense

DELETE/api/v1/expenses/{id}

The DELETE endpoint voids the expense rather than deleting it — it creates a reversal journal entry and marks the expense as VOIDED. The record remains for audit purposes. Optionally pass a reason in the request body. Requires OWNER, ADMIN, or ACCOUNTANT role.

The Expense object

{
  "id": "d4e5f6a7-b8c9-0123-4567-89abcdef0123",
  "expenseNumber": "EXP-2026-0034",
  "expenseDate": "2026-06-10",
  "accountId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "accountCode": "5001",
  "accountName": "Office Supplies",
  "category": "Office Supplies",
  "description": "Printer cartridges and A4 paper",
  "amount": 2500.00,
  "taxAmount": 450.00,
  "total": 2950.00,
  "currency": "INR",
  "gstRate": 18.00,
  "contactId": null,
  "contactName": null,
  "paymentMode": "UPI",
  "paidThroughId": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "paidThroughName": "HDFC Current Account",
  "billable": false,
  "projectId": null,
  "customerContactId": null,
  "customerContactName": null,
  "receiptUrl": null,
  "status": "ACTIVE",
  "journalEntryId": "e5f6a7b8-c9d0-1234-5678-9abcdef01234",
  "createdAt": "2026-06-10T11:30:00Z"
}