AP invoice processing, payment voucher generation, vendor ageing, payment scheduling, bank reconciliation, and TDS deduction management.
Accounts Payable manages vendor invoice processing through to payment. Invoices are booked after three-way match approval (PO-GRN-Invoice). Payment vouchers are generated based on payment terms and schedule. TDS is auto-calculated and deducted per applicable sections. Bank reconciliation matches payment vouchers with bank statement entries. Vendor ageing report tracks outstanding payables.
| Status | Description | Allowed Actions | Next States |
|---|---|---|---|
| Draft | Invoice entered but not yet verified | Edit, Verify | Verified |
| Verified | Three-way match passed | Submit for Approval | Pending Approval |
| Pending Approval | Awaiting finance manager approval | Approve, Return | Approved |
| Approved | Invoice approved for payment | Generate PV, Schedule | PV Generated |
| PV Generated | Payment voucher created | Execute Payment | Paid |
| Paid | Payment executed via bank transfer | Reconcile | Reconciled |
| Reconciled | Bank statement matched | — | — |
invoice_id — PK, vendor invoice headervendor_id — FK → vendor.vendor_masterpo_id — FK → procurement.purchase_orderinvoice_number, invoice_date, due_date — Document detailsgross_amount, tds_amount, net_amount — Financial breakdowngst_amount, igst, cgst, sgst — Tax componentsstatus — Lifecycle statepv_id — PK, payment voucher headervendor_id — FK → vendor.vendor_masterpv_number, pv_date — Document trackingtotal_amount, payment_mode — bank_transfer | cheque | rtgs | neftbank_account_id — FK → treasury.bank_accountreference_number — UTR/cheque numberstatus — Draft → Approved → Paidallocation_id — PKpv_id — FK → accounts_payable.payment_voucherinvoice_id — FK → accounts_payable.ap_invoiceallocated_amount — Amount applied to this invoicetds_amount — TDS deducted for this allocationrecon_id — PKbank_account_id — FK → treasury.bank_accountstatement_date, bank_balance, book_balance — Reconciliation figuresunreconciled_credits, unreconciled_debits — Outstanding itemsstatus — Draft → Completedageing_id — PKvendor_id — FK → vendor.vendor_mastercurrent_due, days_30, days_60, days_90, over_90 — Ageing bucketstotal_outstanding — Sum of all bucketssnapshot_date — As-of date for ageingAccounts team books vendor invoice with reference to PO. System auto-populates line items from PO. GST components (IGST/CGST/SGST) calculated based on vendor and project state.
System matches PO ordered qty, GRN received qty, and invoice billed qty. Variances within tolerance auto-approved. Exceeding tolerance flagged for manual review.
Based on vendor PAN and payment nature, applicable TDS section (194C/194J/194I etc.) auto-detected. TDS rate applied to invoice amount. TDS amount deducted from payment.
Finance team generates PV selecting invoices for payment based on due date and cash availability. Multiple invoices can be combined in one PV. Approval workflow based on amount.
Approved PV executed via bank transfer (RTGS/NEFT). UTR number recorded. Bank account balance updated. Vendor ledger credited.
Monthly bank reconciliation matches PV payments with bank statement entries. Unreconciled items investigated. BRS (Bank Reconciliation Statement) prepared.
-- Vendor-wise outstanding ageing SELECT vm.vendor_name, SUM(CASE WHEN ai.due_date >= CURRENT_DATE THEN ai.net_amount ELSE 0 END) AS current_due, SUM(CASE WHEN CURRENT_DATE - ai.due_date BETWEEN 1 AND 30 THEN ai.net_amount ELSE 0 END) AS days_30, SUM(CASE WHEN CURRENT_DATE - ai.due_date BETWEEN 31 AND 60 THEN ai.net_amount ELSE 0 END) AS days_60, SUM(CASE WHEN CURRENT_DATE - ai.due_date > 60 THEN ai.net_amount ELSE 0 END) AS over_60 FROM accounts_payable.ap_invoice ai JOIN vendor.vendor_master vm ON vm.vendor_id = ai.vendor_id WHERE ai.status IN ('Approved', 'PV Generated') GROUP BY vm.vendor_id ORDER BY over_60 DESC;