{% extends "ui/templates/base/layout.html" %} {% block content %}
{# UI/UX V2 Phase 1D.2 — preserve shared module behaviour; add Partner navigation only for Partner-role access. #} {% set _uiux_partner_role_text = (current_user_roles or [])|join('|')|lower %} {% if 'partner' in _uiux_partner_role_text %} {% include "ui/templates/components/partner_navigation_v2.html" %} {% endif %}

Billing Invoices

Create, issue and print GST-ready client invoices with SAC and tax breakup.

Showing billing records for active FY: {{ active_financial_year or 'All Years' }}

{% if can_generate %} Generate Bills {% endif %} {% if can_view_fee_structure %} Fee Structure {% endif %} {% if can_import_fee_structure %} Download Fee Template Import Fee Excel {% endif %} Payments Billing Settings {% if can_create %} New Invoice {% endif %}
{% if report_summary %}
Billed
₹ {{ '%.2f'|format(report_summary.total_billed or 0) }}
{{ report_summary.invoice_count }} invoice(s)
Collected + TDS
₹ {{ '%.2f'|format(report_summary.total_collected_with_tds or 0) }}
{{ report_summary.payment_count }} receipt(s)
Outstanding
₹ {{ '%.2f'|format(report_summary.outstanding or 0) }}
Active issued bills
Status
Draft {{ report_summary.draft_count }} · Open {{ report_summary.issued_count }} · Paid {{ report_summary.paid_count }}
FY-filtered billing report
{% endif %}
{% for row in rows %} {% else %} {% endfor %}
Invoice No Date FY Client Amount Received/TDS Balance Status
{{ row.invoice_no }} {{ row.invoice_date }} {{ row.financial_year or '-' }} {{ row.client.client_name if row.client else row.client_id }} ₹ {{ '%.2f'|format(row.total_amount or 0) }} ₹ {{ '%.2f'|format((row.amount_received or 0) + (row.tds_deducted or 0)) }} ₹ {{ '%.2f'|format(row.balance_amount or row.total_amount or 0) }} {{ row.status }}
View{% if can_record_payment and row.status not in ['DRAFT','CANCELLED','PAID'] %}Payment{% endif %}Print
No invoices found.
{% endblock %}