Client billing, IPA certification, AR invoice generation, receipt vouchers, client ageing tracking, and revenue recognition.
Accounts Receivable manages the revenue side — from progress-based client billing through IPA (Interim Payment Application) certification, AR invoice generation, and receipt tracking. Billing is milestone-based or measurement-based per contract terms. IPA certification by the Engineer creates the billable amount after applying retention. Client ageing tracks outstanding receivables. Revenue recognition follows percentage-of-completion method.
| Status | Description | Allowed Actions | Next States |
|---|---|---|---|
| Draft | IPA being prepared with measurements | Edit, Add Items | Submitted |
| Submitted | IPA submitted to Engineer for certification | Review, Certify, Query | Certified |
| Certified | Engineer certified billable amount | Generate Invoice | Invoiced |
| Invoiced | AR invoice sent to client | Track Payment | Partially Paid, Paid |
| Partially Paid | Part payment received | Apply Receipt, Follow Up | Paid |
| Paid | Full payment received | Reconcile | Reconciled |
ipa_id — PK, Interim Payment Applicationproject_id, contract_id — FK referencesipa_number, billing_period — Sequential IPA and periodgross_amount — Total measured work valueprevious_certified — Cumulative previously certifiedcurrent_certified — This IPA certified amountretention_pct, retention_amount — Retention deductionnet_amount — Amount payable after deductionscertified_by, certified_date — Engineer certificationinvoice_id — PKipa_id — FK → accounts_receivable.ipa_certificationclient_id — FK → accounts_receivable.client_masterinvoice_number, invoice_date, due_date — Document detailsgross_amount, gst_amount, tds_receivable, net_amount — Financial breakdownstatus — Draft → Sent → Partially Paid → Paidrv_id — PK, receipt voucherclient_id — FK → accounts_receivable.client_masterreceipt_date, amount, payment_mode — Receipt detailsbank_account_id — FK → treasury.bank_accountreference_number — UTR/cheque referenceageing_id — PKclient_id — FK → accounts_receivable.client_mastercurrent_due, days_30, days_60, days_90, over_90 — Ageing bucketstotal_outstanding — Sum of all receivablessnapshot_date — As-of dateQuantity surveyors measure completed work quantities at site. Measurements recorded per BOQ item with supporting sketches and photos.
Accounts team prepares IPA with measured quantities × rates. Previous certified amounts deducted to get current-period value. Retention percentage applied.
Independent Engineer reviews IPA, verifies measurements, and certifies billable amount. May reduce quantities or apply interim deductions.
AR invoice generated from certified IPA. GST calculated based on place of supply rules. TDS receivable noted (client deducts TDS at source).
Payments received matched against AR invoices. Part payments allocated proportionally or to specific invoices. Retention release tracked separately.
-- Outstanding receivables per project SELECT p.project_name, cm.client_name, SUM(ai.net_amount) AS total_billed, SUM(rv.amount) AS total_received, SUM(ai.net_amount) - COALESCE(SUM(rv.amount), 0) AS outstanding FROM accounts_receivable.ar_invoice ai JOIN accounts_receivable.ipa_certification ipa ON ipa.ipa_id = ai.ipa_id JOIN project.project p ON p.project_id = ipa.project_id JOIN accounts_receivable.client_master cm ON cm.client_id = ai.client_id LEFT JOIN accounts_receivable.receipt_voucher rv ON rv.client_id = ai.client_id GROUP BY p.project_id, cm.client_id;