Index: frontend/src/services/billingService.js
===================================================================
--- frontend/src/services/billingService.js	(revision f05de0502f3c7c6a4149420915249e784c827f57)
+++ frontend/src/services/billingService.js	(revision f05de0502f3c7c6a4149420915249e784c827f57)
@@ -0,0 +1,36 @@
+import apiClient from './api';
+
+const ENDPOINT = '/billing';
+
+export const billingService = {
+  getAllBillings: () => apiClient.get(ENDPOINT),
+
+  getBillingById: (id) => apiClient.get(`${ENDPOINT}/${id}`),
+
+  getBillingHistoryForPatient: (patientId) => apiClient.get(`${ENDPOINT}/patient/${patientId}`),
+
+  getBillingDetail: (id) => apiClient.get(`${ENDPOINT}/${id}/detail`),
+
+  generateBillingRecord: (billing) => apiClient.post(ENDPOINT, billing),
+
+  updatePaymentStatus: (id, paymentData) => apiClient.patch(`${ENDPOINT}/${id}/payment-status`, paymentData),
+
+  downloadInvoicePDF: async (billId) => {
+    try {
+      const response = await apiClient.get(`${ENDPOINT}/${billId}/invoice-pdf`, {
+        responseType: 'blob'
+      });
+      // Create a blob URL and download
+      const url = window.URL.createObjectURL(new Blob([response.data]));
+      const link = document.createElement('a');
+      link.href = url;
+      link.setAttribute('download', `invoice-${billId}.pdf`);
+      document.body.appendChild(link);
+      link.click();
+      link.parentNode.removeChild(link);
+      window.URL.revokeObjectURL(url);
+    } catch (error) {
+      throw error;
+    }
+  },
+};
