2026 RELEASELive Demo
KatixoAIERP
Purchasing & Accounts Payable Guide

Purchase Bills & Vendor Payables (AP)

Record vendor invoices, manage Accounts Payable (AP 2000), execute 3-way matching against Goods Receipt Notes (GRN), claim eligible Input Tax Credit (ITC) under GSTR-2B, and process debit note returns in Katixo.

1. Module Overview: Accounts Payable & Input Tax Credit

In financial accounting, a Purchase Bill represents an approved commercial obligation to pay a supplier. Unlike informal cash expense receipts, a formal Purchase Bill records supplier invoice details required for statutory tax audits and Input Tax Credit (ITC) reconciliation:

3-Way Match Audit

Matches bill quantities and unit prices against purchase orders and inspected GRN warehouse receipts.

ITC GSTR-2B Reconciliation

Tracks claimable Input CGST/SGST/IGST against government auto-drafted GSTR-2B statements.

Vendor Aging & Ledgers

Maintains chronological debit/credit subledgers for every vendor with overdue payment scheduling.

2. How to Create a Purchase Bill (Step-by-Step)

  1. 1
    Convert from GRN (Recommended) or Click "New Bill":From an inspected Goods Receipt Note (GRN), click "Convert to Bill". The system pulls the vendor, received quantities, and batch numbers. Alternatively, go to Purchases > Bills > "New Bill" for direct service bills.
  2. 2
    Enter Supplier Invoice Number & Date:Record the vendor's physical invoice number (e.g. INV/2026/8821) and invoice date. This exact number is matched against GSTR-2B on the GST Portal.
  3. 3
    Verify Tax Classifications:Verify HSN codes, taxable subtotal, and GST rates. Katixo automatically confirms whether Input Tax Credit is claimable.
  4. 4
    Post Bill:Click "Post". This officially enters the bill into Accounts Payable (2000), credits the vendor ledger, and debits the appropriate inventory asset or expense account.

3. Automated General Ledger Journal Posting

• DEBIT: Inventory Asset (1200) or Purchase Expense — [Taxable Subtotal]

• DEBIT: Input CGST (1310) & Input SGST (1320) or Input IGST (1330) — [ITC Claimable]

• CREDIT: Accounts Payable (2000) — [Gross Total Due to Supplier]

Developer & REST API Reference

Programmatically query, create, post, and void purchase bills via REST:

GET/api/v1/bills
GET/api/v1/bills/{id}
POST/api/v1/bills
PUT/api/v1/bills/{id}
POST/api/v1/bills/{id}/post
POST/api/v1/bills/{id}/void
GET/api/v1/bills/{id}/pdf
DELETE/api/v1/bills/{id}

List purchase bills

GET/api/v1/bills

Returns a paginated list of purchase bills with optional filters.

Query parameters

ParameterTypeDescription
statusstringFilter by bill status (DRAFT, POSTED, VOIDED).
contact_idUUIDFilter by vendor contact.
date_fromdateBill date on or after (YYYY-MM-DD).
date_todateBill date on or before.
page, size, sortint / stringPagination (0-indexed, default size: 20).

Roles: OWNER, ADMIN, ACCOUNTANT, VIEWER.

Create a purchase bill

POST/api/v1/bills

Creates a new purchase bill in DRAFT status. Returns 201 Created.

curl -X POST https://api.katixo.com/api/v1/bills \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{
    "contactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "vendorBillNumber": "VB-2026-0142",
    "billDate": "2026-06-10",
    "dueDate": "2026-07-10",
    "placeOfSupply": "27",
    "lines": [
      {
        "description": "Toor Dal 1kg",
        "hsnCode": "07139090",
        "itemId": "550e8400-e29b-41d4-a716-446655440000",
        "quantity": 100,
        "unitPrice": 110.00,
        "gstRate": 5.00
      },
      {
        "description": "Basmati Rice 5kg",
        "hsnCode": "10063020",
        "itemId": "661f9500-f3ac-52e5-b827-557766551111",
        "quantity": 50,
        "unitPrice": 220.00,
        "gstRate": 5.00
      }
    ],
    "notes": "Monthly stock purchase"
  }'

Request body

FieldTypeRequiredDescription
contactIdUUIDYesVendor contact ID.
billDatedateYesDate of the bill (YYYY-MM-DD).
linesarrayYesAt least one line item required.
vendorBillNumberstringNoVendor's own bill/invoice number.
dueDatedateNoPayment due date.
placeOfSupplystringNo2-digit state code for GST calculation.
reverseChargebooleanNoWhether reverse charge is applicable.

Post a bill

POST/api/v1/bills/{id}/post

Finalizes a draft bill — creates accounting journal entries, updates vendor payable balance, and (if items are linked) adjusts inventory quantities. A posted bill cannot be edited; use void instead.

Void a bill

POST/api/v1/bills/{id}/void

Voids a posted bill. Reverses the journal entry and inventory changes. Optionally pass a reason in the request body.

curl -X POST https://api.katixo.com/api/v1/bills/{id}/void \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "Content-Type: application/json" \
  -d '{ "reason": "Duplicate entry" }'

The PurchaseBill object

{
  "id": "c3d4e5f6-a7b8-9012-3456-789abcdef012",
  "contactId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "vendorName": "Sharma Wholesale",
  "billNumber": "BILL-2026-0087",
  "vendorBillNumber": "VB-2026-0142",
  "billDate": "2026-06-10",
  "dueDate": "2026-07-10",
  "status": "POSTED",
  "subtotal": 22000.00,
  "taxAmount": 1100.00,
  "totalAmount": 23100.00,
  "amountPaid": 0.00,
  "balanceDue": 23100.00,
  "tdsAmount": 0.00,
  "currency": "INR",
  "placeOfSupply": "27",
  "reverseCharge": false,
  "notes": "Monthly stock purchase",
  "lines": [
    {
      "id": "f1e2d3c4-b5a6-9876-5432-10fedcba9876",
      "lineNumber": 1,
      "description": "Toor Dal 1kg",
      "hsnCode": "07139090",
      "itemId": "550e8400-e29b-41d4-a716-446655440000",
      "quantity": 100,
      "unitPrice": 110.00,
      "discountPercent": 0.00,
      "discountAmount": 0.00,
      "taxableAmount": 11000.00,
      "gstRate": 5.00,
      "taxAmount": 550.00,
      "lineTotal": 11550.00
    }
  ],
  "createdAt": "2026-06-10T09:30:00Z"
}

Authorization

Create, update, post, void, and delete operations require OWNER, ADMIN, or ACCOUNTANT role. Read operations (list, get, PDF) additionally allow VIEWER and OPERATOR.