Billing
Overview
The eFICA Billing API provides comprehensive billing and payment management functionality. This document covers the public billing endpoints available to all authenticated users.
Authentication
All billing endpoints require Bearer token authentication. Include the following header in your requests:
Authorization: Bearer <your-jwt-token>
Content-Type: application/json
Endpoints
1. Get Invoice Month Details
Endpoint: GET /billing/getInvoiceMonthDetail/{year}/{month}
Authentication: Bearer token required (Admin users only)
Description: Retrieve detailed invoice information for a specific year and month. This endpoint provides transaction-level details for billing reconciliation.
Parameters:
year(path parameter): Year for invoice details (e.g., 2024)month(path parameter): Month for invoice details (1-12)
Example Request:
curl -X GET "https://api.efica.co.za/billing/getInvoiceMonthDetail/2024/5" \
-H "Authorization: Bearer your-jwt-token" \
-H "Content-Type: application/json"
Response Structure:
[
{
"gross": -398.0000,
"nett": -346.0870,
"vat": -51.9130,
"transactionChargeType": "Individual",
"qty": 1
}
]
Response Codes:
200- Invoice month details retrieved successfully400- Bad Request - Invalid year or month parameters403- Forbidden - Admin access required404- Not Found - No invoice data found for specified period500- Internal server error
2. Get Account Summary
Endpoint: GET /billing/getAccountSummary
Authentication: Bearer token required (Admin users only)
Description: Retrieve account summary with transaction history for the authenticated user's partner. Supports pagination and date filtering.
Query Parameters:
take(optional): Number of records to return (default: 10, max: 100)skip(optional): Number of records to skip for pagination (default: 0)startDate(optional): Start date for filtering (ISO format)endDate(optional): End date for filtering (ISO format)
Example Request:
curl -X GET "https://api.efica.co.za/billing/getAccountSummary?take=10&skip=0&startDate=01/01/2020&endDate=01/01/2026" \
-H "Authorization: Bearer your-jwt-token" \
-H "Content-Type: application/json"
Response Structure:
{
"totalRecords": 173,
"transactionHistory": [
{
"transactionID": 8835,
"amount": -397,
"paymentType": null,
"status": "COMPLETE",
"transactionDate": "2024-10-04T13:30:00.000Z",
"transactionDescription": "Jane Doe Individual Fica Application",
"individualFicaStatus": "In Progress",
"entityFicaStatus": null,
"entityRisk": null,
"riskDescription": "Low Risk",
"entityClientReference": null,
"entityRegName": null,
"entityRegNumber": null,
"entityFicaApproveDate": null,
"entityFicaApproveAdminName": null,
"individualClientReference": "jd-001",
"individualFirstName": "Jane",
"individualLastName": "Doe",
"individualIDNumber": "0101015000081",
"individualPassportNumber": "",
"individualFicaApproveDate": null,
"individualFicaApproveAdminName": null,
"entityNextReviewDate": null,
"individualNextReviewDate": null,
"usersFirstName": "Jane",
"usersLastName": "Doe",
"nettAmount": -345.2174,
"vatAmount": -51.7826,
"trustFicaStatus": null,
"trustRiskStatus": null,
"trustNextReviewDate": null,
"trustClientReference": null,
"trustName": null,
"trustRegNumber": null,
"trustFicaApproveDate": null
}
]
}
Response Codes:
200- Account summary retrieved successfully400- Bad Request - Invalid query parameters401- Unauthorized - Invalid or missing authentication token403- Forbidden - Admin access required500- Internal server error
Error Handling
Common Error Responses
1. Authentication Errors
{
"message": "Unauthorized",
"statusCode": 401
}
Causes:
- Missing Authorization header
- Invalid JWT token
- Expired token
2. Permission Errors
{
"message": "Forbidden",
"error": "Forbidden",
"statusCode": 403
}
Causes:
- User not admin
- Insufficient permissions
3. Validation Errors
{
"message": ["amount must be a positive number"],
"error": "Bad Request",
"statusCode": 400
}
Causes:
- Invalid parameters
- Missing required fields
Usage Examples
Get Invoice Details for Specific Month
const response = await fetch('/billing/getInvoiceMonthDetail/2024/5', {
method: 'GET',
headers: {
'Authorization': 'Bearer your-jwt-token',
'Content-Type': 'application/json'
}
});
const invoiceDetails = await response.json();
console.log('Invoice details:', invoiceDetails);
Get Account Summary with Pagination
const response = await fetch('/billing/getAccountSummary?take=10&skip=0&startDate=01/01/2020&endDate=01/01/2026', {
method: 'GET',
headers: {
'Authorization': 'Bearer your-jwt-token',
'Content-Type': 'application/json'
}
});
const accountSummary = await response.json();
console.log('Total records:', accountSummary.totalRecords);
console.log('Transactions:', accountSummary.transactionHistory);
Last Updated: 19 July 2025